1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-10 05:50:26 +02:00

Use explicit guile-primitive forms in the macro expansion of dotimes and dolist.

This commit is contained in:
Daniel Kraft 2009-07-30 21:49:00 +02:00
parent e6042c08b7
commit bfd472a7d3

View file

@ -121,9 +121,9 @@
(if (not (symbol? var)) (if (not (symbol? var))
(macro-error "expected symbol as dotimes variable")) (macro-error "expected symbol as dotimes variable"))
`(let ((,var 0)) `(let ((,var 0))
(while (< ,var ,count) (while ((guile-primitive <) ,var ,count)
,@body ,@body
(setq ,var (1+ ,var))) (setq ,var ((guile-primitive 1+) ,var)))
,@(if (= (length args) 3) ,@(if (= (length args) 3)
(list (caddr args)) (list (caddr args))
'())))))) '()))))))
@ -142,10 +142,11 @@
`(let (,var) `(let (,var)
(without-void-checks (,tailvar) (without-void-checks (,tailvar)
(lexical-let ((,tailvar ,iter-list)) (lexical-let ((,tailvar ,iter-list))
(while (not (null ,tailvar)) (while ((guile-primitive not)
(setq ,var (car ,tailvar)) ((guile-primitive null?) ,tailvar))
(setq ,var ((guile-primitive car) ,tailvar))
,@body ,@body
(setq ,tailvar (cdr ,tailvar))) (setq ,tailvar ((guile-primitive cdr) ,tailvar)))
,@(if (= (length args) 3) ,@(if (= (length args) 3)
(list (caddr args)) (list (caddr args))
'()))))))))) '())))))))))