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