Suh*_*HOI 1 lisp clojure evaluate
我是一名初学 Clojure 程序员。在 Book 中,Clojure 的一个优点是不求值的代码是数据。但是我不理解。所以,我想要一个示例代码和一个解释,以便我能理解。
我是韩国人。因此,即使我写了一个尴尬的句子或未能保持我的礼貌,如果你能理解,我将不胜感激。
小智 6
我认为您要问的问题是:为什么编程语言的源代码作为数据(尤其是结构化数据,而不仅仅是字符串)在语言中可用是一种优势?
它是一个优势的原因很简单:一旦您可以访问表示程序源的数据结构,您就可以操纵该结构:您可以编写操纵其他程序的程序。
一个特别好的例子是语言的表面形式和表示它的数据结构相当“低承诺”:它没有编码程序的太多意义,只是它的句法形式。
然后,您可以使用这种低承诺语言编写程序,其中包括该语言中尚不存在的结构。你编写其他程序,这些程序将这些程序转换成其他程序,这些程序只使用语言中已经存在的结构。
你可以继续这样做。因此,您可以从任何给定的语言开始,然后逐步将其构建为您想要的语言。
当然,您几乎可以使用任何语言执行此操作:使用几乎任何允许您将文件读入字符串、将这些字符串解析为某种语言的表示形式、带有扩展名的语言,然后将该表示形式处理为原始语言,然后再将其处理到编译器或解释器。
但是 Lisp 家族语言让你更容易做到这一点:
这就是将源代码作为语言中的结构化数据提供的优势:它是实现您自己的编程语言所需的关键部分(这通常是一种编程术语——一种继承所有基础语言的语言,但在它上面添加一些自己的东西)容易。