微手动LISP的实现

微手动LISP的实现,lisp,Lisp,我正在为中定义的LISP实现一个解释器 我的问题是报纸上说名单是 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) 没有办法区分嵌套列表—所有这些都变成了一个巨大的缺点链 我是不是遗漏了什么 (QUOTE (B C D (E F)))

我正在为中定义的LISP实现一个解释器

我的问题是报纸上说名单是

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)
没有办法区分嵌套列表—所有这些都变成了一个巨大的缺点链

我是不是遗漏了什么

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

( ...(CONS D (CONS E (CONS F NIL))).
(引用B C D(E F))

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

(CONS B (CONS C (CONS D (CONS (CONS E (CONS F NIL)) NIL))))
(CONS B (CONS C (CONS D (CONS E (CONS F NIL)) NIL)))
或者换一种说法:
(列表D(列表ef))
=
(CONS D(列表ef)NIL))

(列表D E F)
=
(CONS D(列表E F))