我想知道Lisp程序的解释/编译过程中"读者"的目的,或者更确切地说是"读者"的任务.
从我刚刚完成的前期问题研究来看,在我看来,读者(在这种情况下特别是Clojure)可以被认为是"语法预处理器".它的主要职责是读者宏和原始形式的扩展.那么,有两个例子:
'cheese --> (quote cheese)
{"a" 1 "b" 2} --> (array-map "a" 1 "b" 2)
Run Code Online (Sandbox Code Playgroud)
因此,读者接受程序的文本(由S-Expressions组成),然后构建并返回可以直接评估的内存数据结构.
这与事实有多远(我是否过度简化了整个过程)?读者还有哪些其他任务?考虑到Lisps的优点是它们的同质性(代码作为数据),为什么需要词法分析(如果这确实可以与读者的工作相比)?
谢谢!