From: Daniel Kraft Date: Thu, 30 Jul 2009 19:49:00 +0000 (+0200) Subject: Use explicit guile-primitive forms in the macro expansion of dotimes and dolist. X-Git-Url: https://git.hcoop.net/bpt/guile.git/commitdiff_plain/bfd472a7d3ede320b55b7653e30ca37eba4d464a?ds=sidebyside Use explicit guile-primitive forms in the macro expansion of dotimes and dolist. --- diff --git a/module/language/elisp/runtime/macro-slot.scm b/module/language/elisp/runtime/macro-slot.scm index e74d74918..5a308a12a 100644 --- a/module/language/elisp/runtime/macro-slot.scm +++ b/module/language/elisp/runtime/macro-slot.scm @@ -121,9 +121,9 @@ (if (not (symbol? var)) (macro-error "expected symbol as dotimes variable")) `(let ((,var 0)) - (while (< ,var ,count) + (while ((guile-primitive <) ,var ,count) ,@body - (setq ,var (1+ ,var))) + (setq ,var ((guile-primitive 1+) ,var))) ,@(if (= (length args) 3) (list (caddr args)) '())))))) @@ -142,10 +142,11 @@ `(let (,var) (without-void-checks (,tailvar) (lexical-let ((,tailvar ,iter-list)) - (while (not (null ,tailvar)) - (setq ,var (car ,tailvar)) + (while ((guile-primitive not) + ((guile-primitive null?) ,tailvar)) + (setq ,var ((guile-primitive car) ,tailvar)) ,@body - (setq ,tailvar (cdr ,tailvar))) + (setq ,tailvar ((guile-primitive cdr) ,tailvar))) ,@(if (= (length args) 3) (list (caddr args)) '())))))))))