Merge pull request #121 from Ferada/small-fixes
authorDavid Vázquez <davazp@gmail.com>
Sat, 15 Jun 2013 09:23:31 +0000 (02:23 -0700)
committerDavid Vázquez <davazp@gmail.com>
Sat, 15 Jun 2013 09:23:31 +0000 (02:23 -0700)
Fix OSET, TYPECASE.

1  2 
src/boot.lisp

diff --combined src/boot.lisp
  
  (defmacro do (varlist endlist &body body)
    `(block nil
 -     (let ,(mapcar (lambda (x) (list (first x) (second x))) varlist)
 +     (let ,(mapcar (lambda (x) (if (symbolp x)
 +                                   (list x nil)
 +                                 (list (first x) (second x)))) varlist)
         (while t
           (when ,(car endlist)
             (return (progn ,@(cdr endlist))))
           (psetq
            ,@(apply #'append
                     (mapcar (lambda (v)
 -                             (and (consp (cddr v))
 +                             (and (listp v)
 +                                  (consp (cddr v))
                                    (list (first v) (third v))))
                             varlist)))))))
  
  (defmacro do* (varlist endlist &body body)
    `(block nil
 -     (let* ,(mapcar (lambda (x) (list (first x) (second x))) varlist)
 +     (let* ,(mapcar (lambda (x1) (if (symbolp x1)
 +                                     (list x1 nil)
 +                                   (list (first x1) (second x1)))) varlist)
         (while t
           (when ,(car endlist)
             (return (progn ,@(cdr endlist))))
           (setq
            ,@(apply #'append
                     (mapcar (lambda (v)
 -                             (and (consp (cddr v))
 +                             (and (listp v)
 +                                  (consp (cddr v))
                                    (list (first v) (third v))))
                             varlist)))))))
  
         (cond
           ,@(mapcar (lambda (c)
                       (if (eq (car c) t)
-                          `((t ,@(rest c)))
+                          `(t ,@(rest c))
                           `((,(ecase (car c)
                                      (integer 'integerp)
                                      (cons 'consp)