gpt4 book ai didi

Scheme:这里为什么要用cond?

转载 作者:行者123 更新时间:2023-12-01 11:09:10 24 4
gpt4 key购买 nike

我尝试编写一个(简单的,即没有 eqan?)one? 函数,如下所示:

(define one?
(lambda (n)
((= 1 n))))

但是上面的方法不起作用,因为当我这样调用它时:

(one? 1)

我遇到了这个错误:

procedure application: expected procedure, given: #t (no arguments)

正确的写法(来自The Little Schemer)是:

(define one?
(lambda (n)
(cond
(else (= 1 n)))))

为什么需要将 condelse 子句一起使用,而不是仅仅返回 (= 1 n)

最佳答案

您没有任何理由想要这样做。当我回到家时,我会检查我的 TLS 副本,看看我是否能猜出发生了什么,但你不会遗漏任何关于 cond 或任何东西的基本知识。

对您上面的评论的回应:它不起作用,因为您在 lambda 的主体中有一组额外的括号。应该是

(lambda (n) (= 1 n))

你的版本中的额外括号意味着你不是返回值 #t#f,而是试图将该值作为不带参数的函数调用.

关于Scheme:这里为什么要用cond?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1971680/

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