Changeset 4040
- Timestamp:
- 09/24/03 14:22:45 (20 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/j/src/org/armedbear/lisp/macros.lisp
r3540 r4040 2 2 ;;; 3 3 ;;; Copyright (C) 2003 Peter Graves 4 ;;; $Id: macros.lisp,v 1.2 1 2003-08-28 00:23:05 piso Exp $4 ;;; $Id: macros.lisp,v 1.22 2003-09-24 14:22:45 piso Exp $ 5 5 ;;; 6 6 ;;; This program is free software; you can redistribute it and/or … … 87 87 (let* ((inits ()) 88 88 (steps ()) 89 ( l1 (gensym))90 ( l2 (gensym)))89 (L1 (gensym)) 90 (L2 (gensym))) 91 91 ;; Check for illegal old-style do. 92 92 (when (or (not (listp varlist)) (atom endlist)) … … 106 106 (t (error "~S is an illegal form for a ~S varlist." v name)))) 107 107 ;; And finally construct the new form. 108 `(block , BLOCK108 `(block ,block 109 109 (,bind ,(nreverse inits) 110 110 (tagbody … … 115 115 ,L2 116 116 (unless ,(car endlist) (go ,L1)) 117 (return-from , BLOCK(progn ,@(cdr endlist))))))))117 (return-from ,block (progn ,@(cdr endlist)))))))) 118 118 119 119 … … 125 125 (do-do-body varlist endlist body 'let* 'setq 'do* nil)) 126 126 127 (defun ansi-loop (exps) 128 (require 'loop) 129 (fmakunbound 'ansi-loop) 130 `(loop ,@exps)) 131 127 132 (defmacro loop (&rest exps) 128 (if (and exps (symbolp (car exps))) 129 (error "LOOP keywords are not supported") 130 (let ((tag (gensym))) 131 `(block nil (tagbody ,tag ,@exps (go ,tag)))))) 133 (dolist (exp exps) 134 (when (atom exp) 135 (return-from loop (ansi-loop exps)))) 136 (let ((tag (gensym))) 137 `(block nil (tagbody ,tag ,@exps (go ,tag)))))
Note: See TracChangeset
for help on using the changeset viewer.