我一直在通过 Little Schemer 书学习 Scheme,令我感到奇怪的是,Scheme/Lisp 中的文件不是语句列表。我的意思是,在 Lisp 中一切都应该是一个列表,但是一个充满语句的文件对我来说并不像一个列表。它是否表示为下面的列表?它不是文件中的列表,这似乎很奇怪。
例如...
#lang scheme
(define atom?
(lambda (x)
(and (not (pair? x)) (not (null? x)))))
(define sub1
(lambda (x y)
(- x y)))
(define add1
(lambda (x y)
(+ x y)))
(define zero?
(lambda (x)
(= x 0)))
每个define语句都是一个列表,但是没有define语句的列表。
最佳答案
不是,因为没有实际原因。事实上,一系列的define
语句改变了语言的内部状态。可以通过函数访问有关状态的信息。例如,您可以询问 Lisp 是否某些符号绑定(bind)到函数。
遍历所有输入的表单(例如,define
表单)没有实际好处。我想这种方法(所有语句都是列表的元素)会导致代码难以阅读。
另外,我认为“在 Lisp 中一切都应该是列表”的想法不太正确,因为还有一些原子类型,它们是完全自给自足的。
关于scheme - 为什么 Lisp 文件不是语句列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25720046/