简单拿 Lice Clojure 在相同的方面对比一下

by

为什么我这么快又发一篇

为什么我的眼里常含泪水

我还是说正事吧

既然都是 Lisp 方言,基于 S-Exp ,而且都是 JVM 上的实现。不管是我这种解释性的,还是 Clojure 那种编译型的,都有很多因为 JVM 而存在的共同特征,比如 Java 风格的异常处理, Exception 类, StackTrace 等。

因此,在写自己的 JVM Lisp 的时候,参考一门现有的 JVM Lisp 是非常有价值的。

我今天趁着补课的时间看了 40 多页的 Programming Clojure (为什么我又废话了一遍),看到很多和我一样的设计:

当然也有很多不同的地方,比如我的 repl 有几个指令是内置的,作为特殊指令存在,而 Clojure 那个是函数。

当然了,编译型语言和解释性语言本身就是有很大区别的。

所以说啊,我还是需要学习一个。但是搞出了一个基本能用的 Lisp 解释器还是很开心啊。我还模仿 JRuby 的 jirb 搞了个基于 Swing 的 JTexPane 的彩色高亮的 repl ,自己看着逼格还不错,只是主窗口并不能输入代码,只能在下面的 JTextField 里面输入。

这个 GUI 的 repl 通过 System.setErr setOut 来重定向了 println 和 System.err.println 的输出,但是我没能重定向 in 。

repl 输入的原理是监听回车键,然后把 JTextField 的文本清空,交给 Parser ,解释执行之后在窗口输出结果。

非常简单。

我说完了

废话连篇

于是我再说点什么来补偿你们吧

我准备写个 Lice 的教程,面向 Java 程序员,读者不需要 Lisp 基础。

好了你们就等着吧。。。

又要去和我妈撕逼了。。。。

P.S.

加入了 GUI API 和更多的 List API , 还有 String API 。现在可用性更好了。

于是在我简要改变了一下文件 API 之后,之前的那个代码已经不能用了,请参考这个多线程爬取 vijos 题目的代码

repl 可以在这里下载。

运行需要 jre 。


Tweet this
Top


创建一个 issue 以申请评论
Create an issue to apply for commentary


协议/License

本作品 简单拿 Lice Clojure 在相同的方面对比一下 采用 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议 进行许可,基于 http://ice1000.org/2017/02/25/Compare2Clojure/ 上的作品创作。
This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
知识共享许可协议