FIFTH to TENTH
authorOwen Rodley <Strigoides@gmail.com>
Fri, 3 May 2013 22:56:59 +0000 (10:56 +1200)
committerOwen Rodley <Strigoides@gmail.com>
Fri, 3 May 2013 22:56:59 +0000 (10:56 +1200)
src/list.lisp
src/toplevel.lisp
tests/list.lisp

index fd9e0bd..bbb7557 100644 (file)
 
 (defun cdr (x) (cdr x))
 
-(defun first (x) (car x))
-(defun second (x) (cadr x))
-(defun third (x) (caddr x))
-(defun fourth (x) (cadddr x))
-(defun rest (x) (cdr x))
+(defun first   (x) (car    x))
+(defun second  (x) (cadr   x))
+(defun third   (x) (caddr  x))
+(defun fourth  (x) (cadddr x))
+(defun fifth   (x) (car    (cddddr x)))
+(defun sixth   (x) (cadr   (cddddr x)))
+(defun seventh (x) (caddr  (cddddr x)))
+(defun eighth  (x) (cadddr (cddddr x)))
+(defun ninth   (x) (car  (cddddr (cddddr x))))
+(defun tenth   (x) (cadr (cddddr (cddddr x))))
+(defun rest    (x) (cdr x))
 
 (defun list (&rest args)
   args)
index bb91c9e..85d926f 100644 (file)
           copy-list copy-tree decf declaim declare defconstant define-setf-expander
           define-symbol-macro defmacro defparameter defun defvar
           digit-char digit-char-p disassemble do do* documentation
-          dolist dotimes ecase eq eql equal error eval every export expt
-          fdefinition find-package find-symbol first flet format fourth fset
-          funcall function functionp gensym get-internal-real-time
+          dolist dotimes ecase eighth eq eql equal error eval every export expt
+          fdefinition fifth find-package find-symbol first flet format fourth
+          fset funcall function functionp gensym get-internal-real-time
           get-setf-expansion get-universal-time go identity if in-package
           incf integerp intern keywordp labels lambda last length let let* list
           list* list-all-packages listp loop make-array make-package
           make-symbol mapcar member minusp mod multiple-value-bind
           multiple-value-call multiple-value-list multiple-value-prog1
-          nconc nil not nreconc nth nthcdr null numberp or otherwise
+          nconc nil ninth not nreconc nth nthcdr null numberp or otherwise
           package-name package-use-list packagep parse-integer plusp pop
           prin1-to-string print proclaim prog1 prog2 progn psetq push
           quote read-from-string remove remove-if remove-if-not return
-          return-from revappend reverse rplaca rplacd second set setf
-          setq some string string-upcase string= stringp subseq subst
+          return-from revappend reverse rplaca rplacd second set setf seventh
+          setq sixth some string string-upcase string= stringp subseq subst
           symbol-function symbol-name symbol-package symbol-plist
-          symbol-value symbolp t tagbody third throw tree-equal truncate unless
-          unwind-protect values values-list variable warn when write-line
-          write-string zerop))
+          symbol-value symbolp t tagbody tenth third throw tree-equal truncate
+          unless unwind-protect values values-list variable warn when
+          write-line write-string zerop))
 
 (setq *package* *user-package*)
 
index d422823..02fed92 100644 (file)
 (test (tree-equal (cons 1 2) (cons 2 3)
                   :test (lambda (a b) (not (= a b)))))
 
+; FIRST to TENTH
+(let ((nums '(1 2 3 4 5 6 7 8 9 10)))
+  (test (= (first   nums) 1))
+  (test (= (second  nums) 2))
+  (test (= (third   nums) 3))
+  (test (= (fourth  nums) 4))
+  (test (= (fifth   nums) 5))
+  (test (= (sixth   nums) 6))
+  (test (= (seventh nums) 7))
+  (test (= (eighth  nums) 8))
+  (test (= (ninth   nums) 9))
+  (test (= (tenth   nums) 10)))
+
 ; SUBST
 ; Can't really test this until EQUAL works properly on lists