一些LISP表達式求自己(的例子是MIT的方案REPL,雖然GNU Common Lisp的同意):LISP列表和正常形態
1 ]=> 3
;Value: 3
而且是在正常的形式。對錶達式(例如(+ 2 1)
)的評估因此可以適當地被認爲是轉換爲正常形式。這很好,因爲這正是我一直正式理解評估的方式。
但隨着列表,我們就有麻煩了:
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沒有正常形態(非空)列表,並且
- (許多)LISP不具有評估正常化形式的屬性嗎?
如果是這樣,這與PLT中的形式主義(如抽象重寫系統)有何不同?什麼替代形式主義在LISPs中獲得評估?或者更準確地說,「大多數主要的LISP」,比如CL,Clojure和Scheme。[0]但我會對不那麼有名的反例感興趣!
沒有「範式」在Lisp和評價不轉換到正常形態。所有數據(除符號和列表之外)評估爲themselve只是在後來的Lisp方言中定義。 Lisp不是lambda演算的實現。它使用特定類型的評估者。 –