LISP列表与范式
一些LISP表达式会自行计算(例如MIT Scheme REPL,但GNU Common LISP同意): 并且是正常的。因此,表达式的求值(例如LISP列表与范式,lisp,eval,normalization,evaluation,lambda-calculus,Lisp,Eval,Normalization,Evaluation,Lambda Calculus,一些LISP表达式会自行计算(例如MIT Scheme REPL,但GNU Common LISP同意): 并且是正常的。因此,表达式的求值(例如(+21))可以恰当地说是转换为标准形式。这很好,因为我一直都是这样理解评估的 但在列表中,我们遇到了麻烦: 1 ]=> (list 3 2) ; Value 16: (3 2) 1 ]=> (3 2) ;The object 3 is not applicable. ;To continue, call RESTART with an o
(+21)
)可以恰当地说是转换为标准形式。这很好,因为我一直都是这样理解评估的
但在列表中,我们遇到了麻烦:
1 ]=> (list 3 2)
; Value 16: (3 2)
1 ]=> (3 2)
;The object 3 is not applicable.
;To continue, call RESTART with an option number:
; (RESTART 2) => Specify a procedure to use in its place.
; (RESTART 1) => Return to read-eval-print level 1.
我认为:
[0]或者更准确地说,“大多数突出的LISP”,如CL、Clojure和Scheme。但我会对不太知名的反例感兴趣 Lisp只能用几个基本运算符来定义。所以你可以考虑从扩展到它们有一个正常的形式。 但Lisp不是lambda演算 以及: 要使用函数作为参数,需要函数的符号,使用Church的lambda符号似乎很自然。我不理解本书的其余部分,因此我不想尝试实现他定义函数的更一般的机制。
--Lisp的历史,斯坦福人工智能实验室备忘录,J.McCarthy,1979年,第6页
Lisp只能用几个基本运算符来定义。所以你可以考虑从扩展到它们有一个正常的形式。 但Lisp不是lambda演算 以及: 要使用函数作为参数,需要函数的符号,使用Church的lambda符号似乎很自然。我不理解本书的其余部分,因此我不想尝试实现他定义函数的更一般的机制。
--Lisp的历史,斯坦福人工智能实验室备忘录,J.McCarthy,1979年,第6页
Lisp中没有“范式”,求值也不会转换为范式。所有数据(除符号和列表外)的计算都是根据后来的Lisp方言的定义进行的。Lisp不是lambda演算的实现。它使用特定类型的求值器。Lisp中没有“范式”,求值也不会转换为范式。所有数据(除符号和列表外)的计算都是根据后来的Lisp方言的定义进行的。Lisp不是lambda演算的实现。它使用特定类型的评估器。
1 ]=> (list 3 2)
; Value 16: (3 2)
1 ]=> (3 2)
;The object 3 is not applicable.
;To continue, call RESTART with an option number:
; (RESTART 2) => Specify a procedure to use in its place.
; (RESTART 1) => Return to read-eval-print level 1.