37 mzlib/restart

▼ |  | Mz Lib: Legacy Libraries

1 | mzlib/ a-signature
2 | mzlib/ a-unit
3 | mzlib/ async-channel
4 | mzlib/ awk
5 | mzlib/ class
6 | mzlib/ cm
7 | mzlib/ cm-accomplice
8 | mzlib/ cmdline
9 | mzlib/ cml
10 | mzlib/ compat
11 | mzlib/ compile
12 | mzlib/ contract
13 | mzlib/ control
14 | mzlib/ date
15 | mzlib/ deflate
16 | mzlib/ defmacro
17 | mzlib/ etc
18 | mzlib/ file
19 | mzlib/ for
20 | mzlib/ foreign
21 | mzlib/ include
22 | mzlib/ inflate
23 | mzlib/ integer-set
24 | mzlib/ kw
25 | mzlib/ list
26 | mzlib/ match
27 | mzlib/ math
28 | mzlib/ md5
29 | mzlib/ os
30 | mzlib/ pconvert
31 | mzlib/ pconvert-prop
32 | mzlib/ plt-match
33 | mzlib/ port
34 | mzlib/ pregexp
35 | mzlib/ pretty
36 | mzlib/ process
37 | mzlib/ restart
38 | mzlib/ runtime-path
39 | mzlib/ sandbox
40 | mzlib/ sendevent
41 | mzlib/ serialize
42 | mzlib/ shared
43 | mzlib/ string
44 | mzlib/ struct
45 | mzlib/ stxparam
46 | mzlib/ surrogate
47 | mzlib/ tar
48 | mzlib/ thread
49 | mzlib/ trace
50 | mzlib/ traceld
51 | mzlib/ trait
52 | mzlib/ transcr
53 | mzlib/ unit
54 | mzlib/ unit-exptime
55 | mzlib/ unit200
56 | mzlib/ unitsig200
57 | mzlib/ zip
| Bibliography
| Index

On this page:

restart-mzscheme

top contents ← prev up next →

(require mzlib/restart) | package: compatibility-lib

> NOTE: This library is deprecated; use racket/sandbox, instead. The racket/sandbox library provides a more general way to simulate running a new Racket process.

> > procedure
> > (restart-mzscheme |  | init-argv |  |  |  |
> > |  | adjust-flag-table |  |  |  |
> > |  | argv |  |  |  |
> > |  | init-namespace) |  | → |  | boolean?
> init-argv : (vectorof string?)
> adjust-flag-table : (any/c . -> . any/c)
> argv : (vectorof string?)
> init-namespace : (-> any)

Simulates starting Racket with the vector of command-line strings argv. The init-argv, adjust-flag-table, and init-namespace arguments are used to modify the default settings for command-line flags, adjust the parsing of command-line flags, and customize the initial namespace, respectively.

The vector of strings init-argv is read first with the standard Racket command-line parsing. Flags that load files or evaluate expressions (e.g., -f and -e) are ignored, but flags that set Racket’s modes (e.g., -c or -j) effectively set the default mode before argv is parsed.

Before argv is parsed, the procedure adjust-flag-table is called with a command-line flag table as accepted by parse-command-line. The return value must also be a table of command-line flags, and this table is used to parse argv. The intent is to allow adjust-flag-table to add or remove flags from the standard set.

After argv is parsed, a new thread and a namespace are created for the “restarted” Racket. (The new namespace is installed as the current namespace in the new thread.) In the new thread, restarting performs the following actions:

- The init-namespace procedure is called with no arguments. The return value is ignored.

- Expressions and files specified by argv are evaluated and loaded. If an error occurs, the remaining expressions and files are ignored, and the return value for restart-mzscheme is set to #f.

- The read-eval-print-loop procedure is called, unless a flag in init-argv or argv disables it. When read-eval-print-loop returns, the return value for restart-mzscheme is set to #t.

Before evaluating command-line arguments, an exit handler is installed that immediately returns from restart-mzscheme with the value supplied to the handler. This exit handler remains in effect when read-eval-print-loop is called (unless a command-line argument changes it). If restart-mzscheme returns normally, the return value is determined as described above.

Note that an error in a command-line expression followed by read-eval-print-loop produces a #t result. This is consistent with Racket’s stand-alone behavior.

top contents ← prev up next →