[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[bug #30070] multiple returns from map
From: |
Szavai Gyula |
Subject: |
[bug #30070] multiple returns from map |
Date: |
Mon, 07 Jun 2010 18:23:04 +0000 |
User-agent: |
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.8) Gecko/20100202 Firefox/3.5.8 |
URL:
<http://savannah.gnu.org/bugs/?30070>
Summary: multiple returns from map
Project: Guile
Submitted by: szgyg
Submitted on: Mon 07 Jun 2010 06:23:03 PM GMT
Category: None
Severity: 3 - Normal
Item Group: None
Status: None
Privacy: Public
Assigned to: None
Open/Closed: Open
Discussion Lock: Any
_______________________________________________________
Details:
; R6RS 11.9:
; "If multiple returns occur from map, the values returned by
; earlier returns are not mutated."
(display "\nGuile's broken map\n")
(define k #f)
(define result #f)
(define results '())
(set! result (map (lambda (x)
(if x x (call/cc (lambda (c)
(set! k c)
1))))
'(#t #f)))
(set! results (cons result results))
(write results)
(newline)
(if (< (cadr result) 5)
(k (+ 1 (cadr result))))
(newline)
;;;;;;;;;;;
(display "Correct map implementation\n") ; regarding call/cc.
(define (map f xs) ; it isn't tail-recursive
(if (null? xs) '() (cons (f (car xs)) (map f (cdr xs)))))
(define k #f)
(define result #f)
(define results '())
(set! result (map (lambda (x)
(if x x (call/cc (lambda (c)
(set! k c)
1))))
'(#t #f)))
(set! results (cons result results))
(write results)
(newline)
(if (< (cadr result) 5)
(k (+ 1 (cadr result))))
(newline)
_______________________________________________________
Reply to this item at:
<http://savannah.gnu.org/bugs/?30070>
_______________________________________________
Message sent via/by Savannah
http://savannah.gnu.org/
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [bug #30070] multiple returns from map,
Szavai Gyula <=