我是编程新手,正在通过SICP工作,并热爱它。虽然我有点困惑方案的语法定义,主要是,有什么区别:关于定义语法的问题
(define foo bar)
和:
(define (foo) bar)
是第一个刚分配栏foo和执行呢?第二个分配和等待电话?
如果是的话,你将如何去调用另一个函数内部的功能,比如说内的if语句,
(if (foo) ...)
或
我是编程新手,正在通过SICP工作,并热爱它。虽然我有点困惑方案的语法定义,主要是,有什么区别:关于定义语法的问题
(define foo bar)
和:
(define (foo) bar)
是第一个刚分配栏foo和执行呢?第二个分配和等待电话?
如果是的话,你将如何去调用另一个函数内部的功能,比如说内的if语句,
(if (foo) ...)
或
第一个版本创建一个名为foo的变量并为其分配一个对bar的引用。没有别的东西被执行。
第二个版本用主体栏创建一个函数。该函数没有得到执行,它被取消(猜测这就是你'等'的意思?)。
您总是通过使其成为列表中的第一项并评估该列表来调用该函数。
创建一个变量
> (define a 1)
> a
1
创建另一个变量引用另一个变量
> (define b a)
> b
1
创建返回无论是在一个
> (define (c) a)
> c
#<procedure:c>
评估功能
功能> (c)
1
编写评估另一个函数,并将结果返回
> (define (d) (if (odd? a) (c) 0))
> (d)
1
现在改变它返回函数c
> (define (d) (if (odd? a) c 0))
> (d)
#<procedure:c>
的第二个版本创建一个函数(不带参数),它相当于
(define foo (lambda() bar))
要调用它,它会是(foo)
感谢您的快速答复的功能。 – 2009-12-05 03:47:43