|
| 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] |