gpt4 book ai didi

不评估他的参数的 lisp 函数

转载 作者:太空宇宙 更新时间:2023-11-03 18:51:36 25 4
gpt4 key购买 nike

作为我的家庭作业,我有一个用 C 编写的小型 List 解释器,其中已经编码了几个函数:setconscarcdrquote

而且我必须添加另外 6 个我选择的函数。 3 个有参数评估,3 个没有参数评估。通过评估,我选择:eq+-1,但我对接下来的 3 没有任何想法,什么样的 Lisp 函数在没有参数评估的情况下有用?

最佳答案

延期评估的必要性

lisp 的所有参数 functions总是被评估。

事实并非如此对于 macrosspecial operators ,其中之一,quote ,你已经实现了。

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

(if (under-attack-p)
(launch-missiles)
(print "Peace!"))

I if 的参数被评估,然后我们会...

  1. 检查我们是否受到攻击
  2. print 和平!
  3. 发射导弹
  4. 如果我们受到攻击,返回Peace!(返回值print), 否则返回launch-missiles
  5. 的值

但是,特殊运算符 if 计算它的第一个参数并且决定根据该值评估其他两个参数中的哪一个。

另见 How does `if` not evaluate all its arguments?

我的实现建议是:

关于不评估他的参数的 lisp 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41639997/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com