- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Lisp常用函数
Lisp常用函数
Lisp 语法及变量皆不分大小写(case insensitive)。
NIL
空串行,相当于 () 。另外真伪值表示时, T 表真, NIL 表伪。只要是任何不是 NIL (空串行) 的值,真伪值都表示真。
QUOTE
CODE:
(QUOTE 参数)
将参数直接传回,不做任何评估动作。可用 (单引号)取代
SETQ, SETF, LET
CODE:
(SETQ 参数1 参数2)
(SETF 参数1 参数2)
(LET ((变量1名称 变量1的值)
(变量2名称 变量2的值)
........
)
变数1,2...的作用范围,既程序执行叙述
)
SETQ, SETF 将参数1的值连结至参数2。 LET 只有在作用范围内有效。
注: SetQ = set quote; SetF = set form
注: 全域变数习惯用两个 * 把变量名称包起来,例如 *globe-variable*
CAR, CDR
CODE:
(CAR 串行参数)
(CDR 串行参数)
CAR 取得参数串行的第一个元素;CDR 取得扣掉第一个元素之后的新串行。
CONS
CODE:
(CONS 参数1 参数串行2)
把参数1 加到参数串行2 的第一个元素,产生出新的串行。
对任一串行 A 而言, (CONS (CAR A) (CDR A)) 即为 A 。
注:如果第二个参数不是串行,则会产生出点对,故少用。
APPEND
CODE:
(APPEND 参数串行1 参数串行2 ........ )
合并若干参数串行,形成新的串行。
注:如果最后一个参数不是串行,也会形成尾巴是带点的串行,故少用。
LIST
CODE:
(LIST 参数1 ........ )
将若干参数,当作是新串行的元素,形成新串行。
注: APPEND 除了最后一个之外的参数皆需为串行,而 LIST 不用。
NULL
CODE:
(NULL 参数)
判断参数是否为空串行(NIL)。
ATOM, LISTP, NUMBERP, ZEROP
CODE:
(ATOM 参数)
(LISTP 参数)
(NUMBERP 参数)
(ZEROP 参数)
判断参数是否为 atom(原子), list(串行), number(数字), zero(0) , ZEROP 的参数必须为数字。
LENGTH
CODE:
(LENGTH 参数串行)
计算参数串行内的元素有几个。
REVERSE
CODE:
(REVERSE 参数串行)
将参数串行内的元素顺序反过来,切记,它只会反转第一层的元素。
EQUAL
[Copy to clipboard] [ - ]
CODE:
(EQUAL 参数1 参数2)
比较两参数是否相等。
=, , , =, =
CODE:
(= 参数1 参数2)
( 参数1 参数2)
( 参数1 参数2)
(= 参数1 参数2)
(= 参数1 参数2)
功用正如你所想,传回值是 T 或是 NIL 。
NOT, AND, OR
CODE:
(NOT 参数)
(AND 参数1 参数2 ...... )
(OR 参数1 参数2 ...... )
功用正如你所想。AND 由左至右搜寻是否有 NIL ,碰到第一个满足的元素时,就停止搜寻,然后传回 NIL ,不然等搜寻到最后一个之后,最后一个参数就会被传回来啦。同理, OR 会搜寻第一个非 NIL 的元素,然后就停止搜寻,把那个元素当做传回值啦。
(to be continued... )
IF, COND
CODE:
(IF 测试条件 测试条件为真的执行叙述 测试条件为伪的执行叙述)
(COND ((测试条件1) (待执行叙述1))
((测试条件2) (待执行叙述2))
......
((测试条件n) (待执行叙述n))
)
由测试条件1~测试条件n逐一检查,发现的第一个满足的测试条件k,就执行之后的待执行叙述k,执行之后,即终止测试,并跳出此 COND 叙述。
注:下面使用方法,类似一般语言的 if-then-else 使用方式
CODE:
(COND ((测试条件1) (待执行叙述1))
( T (待执行叙述2))
)
DEFUN
CODE:
(DEFUN 函数名称 (参数1 参数2 ... )
(执行叙述1)
(执行叙述2)
.........
)
函数定义啦!如果有需要递归定义的话,请直接使用函数名称。
范例:
CODE:
(DEFUN factorial (N)
(COND ((= N 0) 1)
(T (* N (factorial (- N 1))))
)
)
使用时候:
(factorial 5)
传回结
原创力文档


文档评论(0)