Scheme 方案说明(施工)
有人能解释一下为什么:Scheme 方案说明(施工),scheme,elements,cons,Scheme,Elements,Cons,有人能解释一下为什么: (define a (lambda() (cons a #f))) (car (a)) ==> procedure ((car (a))) ==> (procedure . #f) 我想我不明白。谢谢定义从顶层定义全局变量a 匿名过程(lambda()(cons a#f)在调用时,将a和#f的求值组合成一对 当你计算a时,你会得到一个过程。在我的系统中,你会得到 当您评估(a)时,您会得到(#.#f)。现在过程的显示方式高度依赖于实现。没有标准,但许多人
(define a (lambda() (cons a #f)))
(car (a)) ==> procedure
((car (a))) ==> (procedure . #f)
我想我不明白。谢谢
定义
从顶层定义全局变量a
匿名过程(lambda()(cons a#f)
在调用时,将a
和#f
的求值组合成一对
当你计算a
时,你会得到一个过程。在我的系统中,你会得到
当您评估(a)
时,您会得到(#.#f)
。现在过程的显示方式高度依赖于实现。没有标准,但许多人会使用一种约定,即名称a
会出现,但不要指望它
由于a
也可以作为调用a
的结果的car
访问,因此您可以((car(a))
并获得与(a)
相同的结果。这是因为(eq?a(car(a))
是\t
(define a (lambda() (cons a #f)))
定义一个过程,a
,调用该过程时将返回该对
(<the procedure a> . #f)
是在没有参数的情况下调用过程a
,也就是说,根据上述a
的定义
(<the procedure a> . #f)
是
(因为它的意思是“调用汽车
,结果是评估(a)
)
当您添加另一对括号时
((car (a)))
您正在调用该过程,因为它是过程a
,所以返回与(a)
相同的结果
(.#f)
我相信如果你看一下(a)
的值,并将其与((car(a))
进行比较,它会变得更清晰一点。我不理解(car(a))。它与(car(a)())是一样的。不,那是胡说八道。car
接受一个参数,而不是两个。你是真的,但“car”从一个“cons”中选择一个(cons)…还是不?(car(cons 1 2))。在我的例子中,我有(车(a))。这是我无法理解的。我不理解你不理解的是什么。你希望(车(a))
和((车(a)))
是什么?(在(车(a))
,(a)
不是列表(cons a'())
-或(列表a)
-这是一个过程调用。)
(car (a))
((car (a)))
(<the procedure a> . #f)