关于定义语法的问题
我是编程新手,正在学习 SICP,并且很喜欢它。虽然我对方案的定义语法有点困惑,主要是:
(define foo bar)
和:
(define (foo) bar)
第一个只是将 bar 分配给 foo 并执行它?当第二个分配并等待调用时?
如果是这样,您将如何在另一个函数中调用该函数,例如在 if 语句中,
(if (foo) ...)
或者
(if foo ...)
I'm new to programming, working my way through SICP, and loving it. Though I'm a bit confused about scheme's define syntax, mainly, what's the difference between:
(define foo bar)
and:
(define (foo) bar)
Is the first one just assigns bar to foo and execute it? While the second assigns and waits for the call?
if so how would you go about calling the function inside another function, say within an if statement,
(if (foo) ...)
or
(if foo ...)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
第一个版本创建一个名为 foo 的变量并为其分配对 bar 的引用。其他什么都不会被执行。
第二个版本创建了带有主体栏的功能。该函数不会被执行,它会被归档(猜猜这就是你所说的“等待”的意思?)。
您始终通过将函数设为列表中的第一项并评估该列表来调用该函数。
创建一个变量
创建另一个引用另一个变量
的变量 创建一个返回 a 中任何内容的函数 评估
该函数
编写一个评估另一个函数并返回结果的函数
现在将其更改为返回函数 c
The first version creates a variable named foo and assigns it a reference to bar. Nothing else gets executed.
The second version creates a function with the body bar. The function doesn't get executed, it gets filed away (guessing that's what you mean by 'waiting'?).
You always call a function by making it the first item in a list and evaluating the list.
create a variable
create another variable referencing the other variable
create a function that returns whatever is in a
evaluate the function
write a function that evaluates another function and returns the result
now change it to return the function c
它的第二个版本创建了一个函数(没有参数),它相当于
要调用它,它将是 (foo)
The second version of that creates a function (with no parameters), it's equivalent to
To call it, it would be (foo)