/usr/lib/s9fes/help/letrecstar is in scheme9 2010.11.13-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | S9 LIB (letrec* ((<variable> <expression>) ...) <body> ...) ==> object
(load-from-library "letrecstar.scm")
LETREC* is like LETREC, but <expression>s can apply procedures
bound to <variable> defined earlier in the same LETREC*. LETREC
does not allow procedures to be defined in terms of each other,
e.g.:
(letrec ((a (lambda () (lambda () 1)))
(b (a)))
(b)) ==> undefined
LETREC* expands as follows:
(letrec* ((<var1> <expr1>) ---> (let ((<var1> <undefined>)
... ...
(<varN> <exprN>)) (<varN> <undefined>))
<body>) (set! <var1> <expr1>)
...
(set! <varN> <exprN>)
(let ()
<body>))
LETREC* may be used in the place of R4RS LETREC. The opposite,
though, does not generally work (see negative example above).
(letrec* ((a (lambda () (lambda () 1)))
(b (a)))
(b)) ==> 1
|