Scheme 关于定义语法的问题

Scheme 关于定义语法的问题,scheme,Scheme,我是编程新手,通过SICP工作,并且热爱它。虽然我对scheme的定义语法有点困惑,但主要是,它们之间的区别是什么: (define foo bar) 以及: 第一个只是将bar分配给foo并执行它吗?当第二个分配并等待呼叫时 如果是这样的话,您将如何在另一个函数中调用该函数,比如在if语句中 (if (foo) ...) 或 第二个版本创建了一个函数(没有参数),它相当于 (define foo (lambda () bar)) 要调用它,它将是(foo)的第二个版本,创建一个函数(没有

我是编程新手,通过SICP工作,并且热爱它。虽然我对scheme的定义语法有点困惑,但主要是,它们之间的区别是什么:

(define foo bar)
以及:

第一个只是将bar分配给foo并执行它吗?当第二个分配并等待呼叫时

如果是这样的话,您将如何在另一个函数中调用该函数,比如在if语句中

(if (foo) ...)


第二个版本创建了一个函数(没有参数),它相当于

(define foo (lambda () bar))

要调用它,它将是(foo)

的第二个版本,创建一个函数(没有参数),它相当于

(define foo (lambda () bar))

要调用它,它应该是(foo)

第一个版本创建了一个名为foo的变量,并为其分配了一个对bar的引用。其他的都不会被执行

第二个版本使用主体栏创建函数。函数没有被执行,而是被归档了(猜这就是你所说的“等待”的意思吧?)

您总是通过将函数作为列表中的第一项并计算列表来调用函数

创建一个变量

> (define a 1)
> a
1
创建另一个引用其他变量的变量

> (define b a)
> b
1
创建一个函数,该函数返回

> (define (c) a)
> c
#<procedure:c>
编写一个计算另一个函数并返回结果的函数

> (define (d) (if (odd? a) (c) 0))
> (d)
1
现在将其更改为返回函数c

> (define (d) (if (odd? a) c 0))
> (d)
#<procedure:c>
>(定义(d)(如果(奇数?a)c0))
>(d)
#

第一个版本创建一个名为foo的变量,并为其分配一个对bar的引用。其他的都不会被执行

第二个版本使用主体栏创建函数。函数没有被执行,而是被归档了(猜这就是你所说的“等待”的意思吧?)

您总是通过将函数作为列表中的第一项并计算列表来调用函数

创建一个变量

> (define a 1)
> a
1
创建另一个引用其他变量的变量

> (define b a)
> b
1
创建一个函数,该函数返回

> (define (c) a)
> c
#<procedure:c>
编写一个计算另一个函数并返回结果的函数

> (define (d) (if (odd? a) (c) 0))
> (d)
1
现在将其更改为返回函数c

> (define (d) (if (odd? a) c 0))
> (d)
#<procedure:c>
>(定义(d)(如果(奇数?a)c0))
>(d)
#