Scheme and Common Lisp use different names for some of the basic system functions. Many Lisp programs can be translated to the other dialect simply by changing these names (or by providing the existing names as macros or functions). Compatibility packages exist to allow programs in one dialect to run in the other dialect.
The following table gives correspondences between Scheme functions and the equivalent Common Lisp functions.
Scheme: | Common Lisp: |
(define (fn args ...) code) | (defun fn (args ...) code) |
begin | progn |
set! | setq |
eq? | eq |
eqv? | eql |
equal? | equal |
number? | numberp |
zero? | zerop |
pair? | consp |
null? | null |
display | princ |
write | prin1 |
newline | terpri |
(list-tail lst n) | (nthcdr n lst) |
(list-ref lst n) | (nth n lst) |
subset? | subsetp |
map | mapcar |
for-each | mapc |
vector-ref | aref |
vector-set! | (setf (aref ...) val) |
substring | subseq |
#t | t |
#f | nil |
'() | '() or nil |
The following table lists standard Common Lisp functions that are provided in the file initdr.scm.(http://www.cs.utexas.edu/ftp/bogo/cs307/initdr.scm)
dotimes |
dolist |
intersection |
union |
set-difference |
copy-list |
subset |
every |
some |
copy-tree |
subst |
sublis |
nconc |
nreverse |
转自: