Lisp 不使用';我不能评价他的论点

Lisp 不使用';我不能评价他的论点,lisp,operator-precedence,Lisp,Operator Precedence,在我的家庭作业中,我有一个用C编写的小列表解释器,其中已经编码了一些函数:set、cons、car、cdr和quote 我必须添加另外6个我选择的函数。3个带参数评估,3个不带参数评估。 通过评估,我选择:eq,+和-1, 但是我不知道接下来的第3步,什么样的Lisp函数在没有参数求值的情况下是有用的?需要延迟求值 始终对lisp的所有参数求值 事实并非如此 对于 以及, 其中之一,, 您已经实现了 延迟评估有用时的标准示例是: (if (under-attack-p) (launch-

在我的家庭作业中,我有一个用C编写的小列表解释器,其中已经编码了一些函数:
set
cons
car
cdr
quote

我必须添加另外6个我选择的函数。3个带参数评估,3个不带参数评估。 通过评估,我选择:
eq
+
-1
, 但是我不知道接下来的第3步,什么样的Lisp函数在没有参数求值的情况下是有用的?

需要延迟求值 始终对lisp的所有参数求值

事实并非如此 对于 以及, 其中之一,, 您已经实现了

延迟评估有用时的标准示例是:

(if (under-attack-p)
    (launch-missiles)
    (print "Peace!"))
我对他的论点进行了评估, 那我们就

  • 检查我们是否受到攻击
  • 和平
  • 发射导弹
  • 如果我们受到攻击,返回和平(由返回的值)
    打印
    ),否则返回
    发射导弹的值
  • 但是,特殊运算符
    if
    计算其第一个参数并 决定基于该值计算其他两个参数中的哪一个

    另见

    我的建议是:
    • --迭代
    • --有条件的
    • 或者——绑定
    推迟评估的必要性 始终对lisp的所有参数求值

    事实并非如此 对于 以及, 其中之一,, 您已经实现了

    延迟评估有用时的标准示例是:

    (if (under-attack-p)
        (launch-missiles)
        (print "Peace!"))
    
    我对他的论点进行了评估, 那我们就

  • 检查我们是否受到攻击
  • 和平
  • 发射导弹
  • 如果我们受到攻击,返回和平(由返回的值)
    打印
    ),否则返回
    发射导弹的值
  • 但是,特殊运算符
    if
    计算其第一个参数并 决定基于该值计算其他两个参数中的哪一个

    另见

    我的建议是:
    • --迭代
    • --有条件的
    • 或者——绑定

    在Common Lisp中,所有函数都计算其参数。如果不计算参数,那么您需要一个不计算其参数的宏或特殊形式。也许您可以实现
    cond
    ,它不会像函数一样计算其参数。也许您可以为控制流实现一些其他特殊形式。也许您可以实现
    defun
    。为什么要标记common lisp?您正在制作双名称空间lisp吗?动态范围的词汇范围?在决定除了
    if
    这是一个扣篮之外还要实现哪些特殊形式之前,我会先决定这两种形式。如果不计算参数,那么您需要一个不计算其参数的宏或特殊形式。也许您可以实现
    cond
    ,它不会像函数一样计算其参数。也许您可以为控制流实现一些其他特殊形式。也许您可以实现
    defun
    。为什么要标记common lisp?您正在制作双名称空间lisp吗?动态范围的词汇范围?在决定除了
    if
    这是一个扣篮之外,还应该实施哪些特殊形式之前,我会先决定这两种形式。