gpt4 book ai didi

scheme - 为什么 '(1 2 3) 评估为列表 en Lisp(方案)?

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

quote (') 用于引入预估值,因此 (quote x) 产生符号 x 而不是符号的计算结果。

数字、 bool 值、字符和字符串在 Scheme 中是自求值的,因此引用它们并不重要。

但为什么 (quote (1 2 3))(quote ()) 对谓词 回答 #t列表?

结果不应该是一个“预先评估”的值吗?但是在这种情况下 (1 2 3) 实际上已经被计算为 (list 1 2 3)?

谢谢。

最佳答案

pre-evaluated value

我不确定你从哪里得到这个词。我从来没有用过它。这不是“预评估”,而是未评估。

这实际上是 Lisp(和 Scheme)是 Homoiconic 的全部作品: 程序的结构实际上在下面使用了列表和原子。

quoteeval 的对偶:(eval (list '+ '1 '2 '3)) number 只是数字,(eval (list '+ 1 2 3)) does it as well) 与 (quote '(+ 1 2 3)) 相反.

已评估的列表是一个调用,因此未评估的调用是一个列表。

Should't the result be a "pre-evaluated" value? But in this case (1 2 3) has actually been evaluated to (list? 1 2 3)?

您在这里漏掉了一些括号!您得到 (list? '(1 2 3))(或 (list? (quote (1 2 3))。也就是说,(list? (列表 1 2 3))。这是真的。

您可以使用 (eval (list '+ 1 2 3)) 检查相反的结果:您得到 6

注意:有些值只是对它们自己求值(比如数字或函​​数。您可以多次向它抛出 eval,它不会改变任何东西:( eval (eval (eval 1))) 只是 1。)

关于scheme - 为什么 '(1 2 3) 评估为列表 en Lisp(方案)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39266734/

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