gpt4 book ai didi

具有 2 个参数的计划过程

转载 作者:行者123 更新时间:2023-12-05 06:40:39 33 4
gpt4 key购买 nike

很久以前就学会了 C 代码;想用 Scheme 尝试一些新的和不同的东西。我正在尝试制作一个接受两个参数并返回两者中较大者的过程,例如

(define (larger x y)
(if (> x y)
x
(y)))

(larger 1 2)

或者,

(define larger
(lambda (x y)
(if (> x y)
x (y))))

(larger 1 2)

我相信这两者是等价的,即 如果 x > y,则返回 x;否则,返回 y

当我尝试其中任何一个时,我都会收到错误消息,例如2 不是函数错误:无法调用:2

我花了几个小时阅读 SICP 和 TSPL,但没有任何内容跳出(也许我需要使用“列表”并通过 carcdr 引用这两个元素?)

感谢任何帮助。如果我发布错误,错过了之前对同一问题的回答,或者有其他不当之处,我深表歉意。

最佳答案

原因是,与 C 和许多其他语言不同,在 Scheme 和所有 Lisp 语言中,括号是语法的重要组成部分。

例如它们用于函数调用:(f a b c) 表示应用(调用)函数 f 到参数 a, bc,而 (f) 表示应用(调用)函数 f(不带参数)。

因此在您的代码中 (y) 表示应用数字 2(y 的当前值),但 2 不是函数,而是一个数字(如错误消息中所示)。

只需将代码更改为:

(define (larger x y)
(if (> x y)
x
y))

(larger 1 2)

关于具有 2 个参数的计划过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42270150/

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