gpt4 book ai didi

lisp - 简单的方案练习。第06章真与假

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

你好,我是 SO 的新手,所以请多关照。

练习 6.1Simply Scheme有表达式:

(cond (empty? 3)
(square 7)
(else 9))

我的想法是它应该评估 (square 7) 并返回它。 (empty? 3) 被评估(返回原子 - 用其他原子和列表尝试它,同样的处理)。

我很困惑。

我所知道的:

  1. Scheme 中所有不假的都是真的。如果 3 为真且不为空(#f),为什么 cond 表达式返回(空?3)?
  2. 评估 cond 表达式的第一个参数,如果它为真,则返回 #t、已定义的值或 #undefined 取决于上下文。如果为假,它将继续连续评估 cond 参数,直到这样做(或找不到合适的返回值)然后退出 cond。

我不知道的是:

  1. (empty? 3) 自己返回#f。为什么 cond 在这里终止而不求值(方 block 7)?
  2. 为什么在 cond 中对 (empty?3) 的求值返回原子,而不是#t 或#f?

我将 SCM 与 Slib 一起使用,并加载了 Simply Scheme 提供的附加库(simply.scm、functions.scm、ttt.scm、match.scm、database.scm)。

空?在这一点上,simply.scm 中的定义超出了我的计划范围。

最佳答案

cond形式是这样的:

(cond (something-to-check-for-truthiness value-if-truthiness-succeed)
...other checks in the same format as above )

现在,如果您将代码放入这种格式中。 empty?即只有空函数(不是它的调用)适合代替 something-to-check-for-truthiness并且函数始终是真值,因此编号为 3empty? 之后返回并适合 value-if-truthiness-succeed投币口。所以,没有调用 empty?完全发挥作用。

关于lisp - 简单的方案练习。第06章真与假,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16144024/

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