mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-06-09 21:40:33 +02:00
Use explicit guile-primitive forms in the macro expansion of dotimes and dolist.
This commit is contained in:
parent
e6042c08b7
commit
bfd472a7d3
1 changed files with 6 additions and 5 deletions
|
@ -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))
|
||||||
'())))))))))
|
'())))))))))
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue