LISP中的基础知识
【摘要】
(quote x)返回x,我们简记为'x
(atom x)当x是一个原子或者空表时返回原子t,否则返回空表()。在Lisp中我们习惯用原子t表示真,而用空表()表示假。
> (atom 'a)
t
> (atom '(a b c))
()
> (atom '())
t
(eq x y)当x和y的值...
(quote x)返回x,我们简记为'x
(atom x)当x是一个原子或者空表时返回原子t,否则返回空表()。在Lisp中我们习惯用原子t表示真,而用空表()表示假。
> (atom 'a)
t
> (atom '(a b c))
()
> (atom '())
t
-
> (eq 'a 'a)
-
t
-
> (eq 'a 'b)
-
()
-
> (eq '() '())
-
t
-
> (car '(a b))
-
a
-
> (cdr '(a b c))
-
(b c)
(cons x y)要求y是一个表,它返回一个表,这个表的第一个元素是x,其后是y中的所有元素,例如:
-
> (cons 'a '(b c))
-
(a b c)
-
> (cons 'a (cons 'b (cons 'c ())))
-
(a b c)
(cond (p1 e1) (p2 e2)...(pn en))
p1到pn为条件,e1到en为结果,cond操作符依次对p1到pn求值,直到找到第一个值为原子t(还
记得吗?)的p,此时把对应的e作为整个表达式的值返回,例如:
-
> (cond ((eq 'a 'b) 'first) ((atom 'a) 'second))
-
second
取第二个元素
(car (cdr x))
可简写成
-
> (cadr '((a b) (c d) e))
-
(c d)
取第三个元素
(car (cdr (cdr x)))
可简写成
>(caddr '((a b) (c d) e))
使用(list e1 e2 ... en)来表示 (cons e1 (cons e2 (... (cons en '())...)))
-
> (cons 'a (cons 'b (cons 'c '())))
-
(a b c)
-
> (list 'a 'b 'c)
-
(a b c)
-
> (null 'a)
-
()
-
> (null '())
-
t
-
> (and 'a 'b)
-
t
-
> (and (atom 'a) (eq 'b 'c))
-
()
-
> (not 'a)
-
()
-
> (not (eq 'a 'b))
-
t
-
> (append '(a b) '(c d))
-
(a b c d)
-
> (append '() '(x y))
-
(x y)
-
> (pair '(a b c) '(x y z))
-
((a x) (b y) (c z))
-
> (assoc 'a '((a x) (b y)))
-
x
-
> (assoc 'a '((a (foo bar)) (b y) (c z)))
-
(foo bar)
-
> (subst '(x y) 'b '(a b (a b c) d))
-
(a (x y) (a (x y) c) d)
文章来源: blog.csdn.net,作者:fengda2870,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/fengda2870/article/details/9075681
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)