微手动LISP的实现
我正在为中定义的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)))
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))