函数
命名函数
使用 defun
宏定义函数
(defun fib (n)
"Return the nth Fibonacci number."
(if (< n 2)
n
(+ (fib (- n 1))
(fib (- n 2)))))
像调用其他任何东西一样调用它们
CL-USER> (fib 30)
832040
匿名函数
应用程序
可以使用 funcall
间接调用函数
CL-USER> (funcall #'fib 30)
832040
或使用 apply
CL-USER> (apply #'fib (list 30))
832040
多个返回值
(defun many (n)
(values n (* n 2) (* n 3)))
CL-USER> (multiple-value-list (many 2))
(2 4 6)
CL-USER> (nth-value 1 (many 2))
4
我们还可以使用 multiple-value-bind
将每个返回值分配给一个变量
CL-USER> (multiple-value-bind (first second third)
(many 2)
(list first second third))
(2 4 6)