no continuations
Ashley Yakeley
ashley at semantic.org
Fri Jan 9 00:48:15 EST 2004
In article <20040102051625.053B1AB8D at Adric.metnet.navy.mil>,
oleg at pobox.com wrote:
> Similarly, R5RS obligates any Scheme implementation to resort to
> assignments when processing a letrec form.
Not mine! I do use a polyvariadic fixed-point function.
(define circular (letrec ((c (cons 'x c))) c))
(list-head circular 10)
=>
(x x x x x x x x x x)
Try it yourself at <http://hscheme.sourceforge.net/interpret.php>.
I also make the fixed-point function available as "call-with-result",
it's more or less equivalent to this:
(lambda (f) (letrec ((x (f x))) x))
> An implementation may not
> use a (polyvariadic) Y to implement letrec, unless the implementation
> can prove that the difference is unobservable for the form in
> question.
Do you have an example of use of Y for letrec where a program would
violate R5RS?
--
Ashley Yakeley, Seattle WA
More information about the Haskell-Cafe
mailing list