2010-08-12 58 views
2

我在執行中定義的LISP的解釋,實施微手冊LISP

http://www.scribd.com/vacuum?url=http://www.ee.ryerson.ca/~elf/pub/misc/micromanualLISP.pdf

我的問題是論文指出,一個LIST是,

4. (LIST e1 ... en) is defined for each n to be 
    (CONS e1 (CONS ... (CONS en NIL))). 

所以當在讀來自用戶的列表如

(QUOTE (B C D (E F))) 

使用上述結構它變得,

(QUOTE B C D E F) 

沒有辦法區分嵌套列表它都成爲一個巨大的利弊鏈。

我在這裏錯過了什麼嗎?

回答

5

(QUOTE (B C D (E F)))不同的是

(CONS B (CONS C (CONS D (CONS (CONS E (CONS F NIL)) NIL)))) 

(QUOTE (B C D E F))

(CONS B (CONS C (CONS D (CONS E (CONS F NIL)) NIL))) 

,或者換一種說法:
(LIST D (LIST E F)) = (CONS D (CONS (LIST E F) NIL))
(LIST D E F) = (CONS D (LIST E F))

1
(QUOTE (B C D (E F))) 
= (... (CONS (E F) NIL))). 
= (... (CONS (CONS E (CONS F NIL)) NIL))). 

這是從

(...(CONS D (CONS E (CONS F NIL))). 
0
(QUOTE (B C D (E F))) = (LIST B C D (LIST E F))