ACONS
authorOwen Rodley <Strigoides@gmail.com>
Fri, 3 May 2013 23:49:41 +0000 (11:49 +1200)
committerOwen Rodley <Strigoides@gmail.com>
Fri, 3 May 2013 23:49:41 +0000 (11:49 +1200)
src/list.lisp
src/toplevel.lisp
tests/list.lisp

index 173dedf..09092ad 100644 (file)
         (setq alist (cdr alist))))
   (car alist))
 
+(defun acons (key datum alist)
+  (cons (cons key datum) alist))
 
 
 (define-setf-expander car (x)
index 0bb2b43..c03f370 100644 (file)
@@ -49,7 +49,7 @@
   (values-list /))
 
 (export '(&body &key &optional &rest * ** *** *gensym-counter* *package* + ++
-          +++ - / // /// 1+ 1- < <= = = > >= and append apply aref arrayp
+          +++ - / // /// 1+ 1- < <= = = > >= acons and append apply aref arrayp
           assoc atom block boundp butlast cadar caaar caadr cdaar cdadr
           cddar caaaar caaadr caadar caaddr cadaar cadadr caddar cdaaar
           cdaadr cdadar cdaddr cddaar cddadr cdddar cddddr caar cadddr caddr
index 72da656..7969b0b 100644 (file)
   (test (tailp a a)))
 (test (tailp 'a (cons 'b 'a)))
 
+; ACONS
+; FIXME: Write the alist in a more natural form once #72 has been fixed
+(test (equal (cons (cons 1 2) (list (cons 3 4)))
+             (acons 1 2 (list (cons 3 4)))))
+(test (equal (list (cons 1 2)) (acons 1 2 ())))
+
 ; SUBST
 ; Can't really test this until EQUAL works properly on lists