(defun exp (x y)
(cond ((zerop y) 1)
((* x (exp x (1- y))))))
>(exp 2 3)
8
Script started on Wed Apr 7 21:11:37 1999
math 21: cat foo.lsp
(defun for (a)
(prog ()
loop (print (car a))
(setq a (cdr a))
(cond ((not (null a)) (go loop)))))
(defun rev (x)
(cond ((null (cdr x)) (print (car x)))
((prog () (rev (cdr x))
(print (car x))))))
math 22: lisp
AKCL (Austin Kyoto Common Lisp) Version(1.619) Thu Oct 7 15:46:49 PDT 1993
Contains Enhancements by W. Schelter
>(+ 1 2)
3
>(setq a 2)
2
>(setq b '(a 2 3))
(A 2 3)
>(car b)
A
>(cdr b)
(2 3)
>(cons '+ (cdr b))
(+ 2 3)
>(setq c (cons '+ (cdr b)))
(+ 2 3)
>c
(+ 2 3)
>(eval c)
5
>(load "foo.lsp")
Loading foo.lsp
Finished loading foo.lsp
T
>(setq d '(1 2 3 4 5 6 7))
(1 2 3 4 5 6 7)
>d
(1 2 3 4 5 6 7)
>(rev d)
7
6
5
4
3
2
1
NIL
>(for d)
1
2
3
4
5
6
7
NIL
>(bye)
Bye.
math 24: exit
math 25:
script done on Wed Apr 7 21:13:45 1999
Some books refer to "pure" LISP, i.e., using just the basic functions. Let's look at some standard functions defined in terms of more elementary functions recursively.
LENGTH => number (defun length (x) (cond ((null x) 0) ((1+ (length (cdr x)))) )) MEMBER => T/NIL (defun member (x y) (cond ((null y) nil) ((equal x (car y)) T) ((member x (cdr y))) )) APPEND => list (defun append (x y) (cond ((null x) y) ((cons (car x) (append (cdr x) y))) ))
This page is maintained by Dennis C. Smolarski, S.J.
© Copyright 1998, 1999 Dennis C. Smolarski, SJ, All rights reserved.
Last changed: 7 April 1999.