|
From: | John Cowan |
Subject: | Re: [Chicken-hackers] What happened to -strict-letrecs? |
Date: | Sat, 9 Feb 2008 13:18:53 -0500 |
User-agent: | Mutt/1.5.13 (2006-08-11) |
Alex Shinn scripsit: > The current letrec behavior is a perfectly compliant > interpretation of R5RS. There is another compliant > interpretation which would signal an error in some cases. Here are the relevant bits of code from SISC's r5rs_pitfall.scm: ;;Credits to Al Petrofsky ;; In thread: ;; defines in letrec body ;; http://groups.google.com/groups?selm=87bsoq0wfk.fsf%40app.dial.idiom.com (should-be 1.1 0 (let ((cont #f)) (letrec ((x (call-with-current-continuation (lambda (c) (set! cont c) 0))) (y (call-with-current-continuation (lambda (c) (set! cont c) 0)))) (if cont (let ((c cont)) (set! cont #f) (set! x 1) (set! y 1) (c 0)) (+ x y))))) ;;Credits to Al Petrofsky ;; In thread: ;; Widespread bug (arguably) in letrec when an initializer returns twice ;; http://groups.google.com/groups?selm=87d793aacz.fsf_-_%40app.dial.idiom.com (should-be 1.2 #t (letrec ((x (call/cc list)) (y (call/cc list))) (cond ((procedure? x) (x (pair? y))) ((procedure? y) (y (pair? x)))) (let ((x (car x)) (y (car y))) (and (call/cc x) (call/cc y) (call/cc x))))) -- MEET US AT POINT ORANGE AT MIDNIGHT BRING YOUR DUCK OR PREPARE TO FACE WUGGUMS John Cowan address@hidden http://www.ccil.org/~cowan
[Prev in Thread] | Current Thread | [Next in Thread] |