diff options
author | Kevin Ryde <user42@zip.com.au> | 2005-01-27 21:20:47 +0000 |
---|---|---|
committer | Kevin Ryde <user42@zip.com.au> | 2005-01-27 21:20:47 +0000 |
commit | c8fc38b13ba15c708479f5c6bfceb0e0f67e02ef (patch) | |
tree | 0d45a355fde20166e8d05cad24df41728bf4014e | |
parent | 76da80e7881947ebcdb647e5ce4be029fece29f2 (diff) | |
download | guile-c8fc38b13ba15c708479f5c6bfceb0e0f67e02ef.tar.gz |
(while): Remove the unquote from do, it breaks with ice-9
syncase. Reported by Pach Roman.
-rw-r--r-- | ice-9/boot-9.scm | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/ice-9/boot-9.scm b/ice-9/boot-9.scm index d31c65051..1c6ae8d92 100644 --- a/ice-9/boot-9.scm +++ b/ice-9/boot-9.scm @@ -1,6 +1,6 @@ ;;; installed-scm-file -;;;; Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002,2003,2004 +;;;; Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002,2003,2004,2005 ;;;; Free Software Foundation, Inc. ;;;; ;;;; This library is free software; you can redistribute it and/or @@ -2754,6 +2754,16 @@ ;; `while' even when recursing. `while-helper' is an easy way to keep the ;; `key' binding away from the cond and body code. ;; +;; FIXME: This is supposed to have an `unquote' on the `do' the same used +;; for lambda and not, so as to protect against any user rebinding of that +;; symbol, but unfortunately an unquote breaks with ice-9 syncase, eg. +;; +;; (use-modules (ice-9 syncase)) +;; (while #f) +;; => ERROR: invalid syntax () +;; +;; This is probably a bug in syncase. +;; (define-macro (while cond . body) (define (while-helper proc) (do ((key (make-symbol "while-key"))) @@ -2763,7 +2773,7 @@ (lambda () (throw key #f)))) (lambda (key arg) arg))))) `(,while-helper (,lambda (break continue) - (,do () + (do () ((,not ,cond)) ,@body) #t))) |