[译] Lisp之根源(十六)

> (cadr '((a b) (c d) e))
(c d)

> (caddr '((a b) (c d) e)
e

> (cdar '((a b) (c d) e)
(b)

同样,我们用(list e1 ... en)代表(cons e1 ... (cons en '()) ... )

> (cons 'a (cons 'b (cons 'c '())))
(a b c)

> (lisp 'a 'b 'c)
(a b c)

现在,我们定义一些新的函数。我在函数名的末尾加了句号,以便于和原始的函数区分开。同时也防止和现有的Common Lisp的函数产生冲突。

  1. (null. x)判断参数是否是空列表。
(defun null. (x)
    (eq x '()))

> (null. 'a)
'()

> (null. '())
t
  1. (and. x y),当参数都为true时,返回true,否则返回false(即'())。
(defun and. (x y)
    (cond x (cond (y 't) ('t '())))
    ('t '())))

> (and. (atom 'a) (eq 'a 'a))
t

> (and. (atom 'a) (eq 'a 'b))
()
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 原文地址:https://github.com/JuanitoFatas/slime-user-manual#24...
    四月不见阅读 3,366评论 0 2
  • 3.4 说说相等和内部表示 在Lisp中主要有5种相等断言,因为不是所有的对象被创建的时候都是相等意义上的相等。数...
    geoeee阅读 1,972评论 0 6
  • React工作原理: React 会创建一个虚拟 DOM(virtual DOM)。当一个组件中的状态改变时,Re...
    任小宪阅读 251评论 0 0
  • 今天和她下了馆子,吃了顿烤鱼。我不记得上一次下馆子吃大餐是什么时候了。大概是因为穷,其实也没有必要,我对饮食...
    都庞先生阅读 181评论 0 0
  • 好多人想写一写,卢工第一个吧。 真名真姓,卢工,卢建林。我们项目的合作方经理。一个看不出年轻的小伙子,天天加班到深...
    山谷和百合阅读 392评论 1 2

友情链接更多精彩内容