All symbols: http://www.lispworks.com/documentation/HyperSpec/Front/X_AllSym.htm
- Simplified Common Lisp Reference: https://jtra.cz/stuff/lisp/sclr/index.html
- Lots of examples from CSCI 330: http://csci.viu.ca/~wesselsd/courses/csci330/code/lisp/
- The Common Lisp Cookbook: https://lispcookbook.github.io/cl-cookbook/
- The Hyperspec: http://www.lispworks.com/documentation/HyperSpec/Front/
- Practical Common Lisp (full text): https://gigamonkeys.com/book/
- Lisp vs Scheme vs Clojure: https://hyperpolyglot.org/lisp
- Rainer Joswig on stackoverflow: https://stackoverflow.com/users/69545/rainer-joswig
- Strings:
"hello"
- Characters:
#\z
- Numbers:
- Bit:
0
,1
- Integer:
42
- Single float:
12.3
,12.3f0
,1.23e1
- Double float:
12.3d0
- Ratio:
1/2
- Complex:
#c(1 2)
(1 + 2i)
- Bit:
- Boolean:
nil
and'()
are falsy, everything else is truthy.t
is true.
Values:
- local:
let
,let*
- global:
defvar
,defparameter
,defconstant
Mutation:
setq
,setf
Functions:
- local:
flet
,labels
- global:
defun
Aliasing evenp
as even?
:
(setf (fdefinition (quote even?)) (function evenp))
(setf (fdefinition 'even?) #'evenp)
(let list of pairs expression expression ...)
(let ((a 1)) (print a))
(let ((a 1) (b 2)) (print a) (print b))
Use let*
when you need to define variables in terms of each other.
(let ((a 1) (b a)) (print a) (print b))