《Successful Lisp》Chapter 3 - Essential Lisp in Twelve Lessons
Lesson 7 - Essential Function Definition读书笔记.
通过defun定义函数
(defun 猜数字 (数字)
"简单的猜数字游戏,给这个函数一个数字参数,然后函数返回一些返回信息"
(let ((随机数字 (random 100)))
(cond (< 数字 随机数字) (print "小了!")
(> 数字 随机数字) (print "大了!")
(= 数字 随机数字) (print "猜对了!"))))
在defun后有四个部分,第一部分:函数名——猜数字;第二部分:函数参数列表,可以为空或者任意多,当然也可以定义可选参数、剩余参数;第三部分:函数的文档,用来描述函数,并可以用(documentation 猜数字)的形式调用,不过这部分可有可无;第四部分:函数体。
用defun定义的函数总会和函数名这个符号绑定在一起,所以称之为有名函数。
使用lambda定义匿名函数
匿名函数被用于只需要被调用一次或是临时需要函数的场合。
(lambda (x) (* x x);求值返回了一个函数
-> #<FUNCTION (LAMBDA (X)) {100510D78B}>
((lambda (x) (* x x)) 2)
-> 4
lambda形式应该出现在需要函数的地方