学习任何语言的共同点都是多实践。比如,一边看书,一边动手做实验。
我们首先需要一个顺手的clojure开发环境。
当然,使用clojure的最简单方式是:命令行 + 记事本。
到clojure的官网下载jar包:clojure-1.8.0.jar(这是写博客时的版本,您看博客的时候可能有更新版本了)
在控制台输入:(前提是你的机器上已经安装过java了)
java -jar clojure-1.8.0.jar
这会启动REPL,交互式环境。
java -cp clojure-1.8.0.jar clojure.main
这是另一种方法,效果等同。启动REPL后,出现类似:
可以输入clojure代码,与机器交互了。
比如:
可能你已经注意到:clojure的特色之一:表达式采用“前缀”模式,而一般主流语言采用“中缀”模式。
上边也演示了clojure的“有理数”类型。这种“分数运算”好处是不会损失精度。
同时还看到了“nil”,这是因为函数式的规则是:每个表达式“必须”返回一个值。而“println”不是一个纯函数,我们执行它是为了副作用。
如果已经编写了一个clojure源程序 a.clj
运行它的方法是:java -jar clojure-1.8.0.jar a.clj
每次输入这么长,太折磨人了。你可以做一个 clj.bat 文件:
java -jar clojure-1.8.0.jar %1
这以后,启动REPL用:clj
运行源文件用: clj a.clj
记事本毕竟太弱弱了,除非别无选择才用它。
下面介绍好用的编辑器。
sublimeText
可以从官网下载sublimeText3 ,可以一直免费使用。
其功能不比付费版本少,只是时不时弹出窗口要你注册,一直到您良心发现付费为止。
这个软件是绿色的。也就是实际上并不需要安装,拷贝过来就可以用。
但注意:软件所在的位置最好不要有中文路径名,因为该软件会自动更新,如果名字不好会更新失败的。
安装好后,开始折腾插件。
1. 安装 package controler
启动sublimeText, 按 ctrl + ` (tab 上方的键) ,显示出控制台(console)
这个功能也可以通过菜单完成: view | show(hide) console,效果完全相同。
然后把如下的脚本贴进去执行(这个脚本有多个语句,但只有一行,按回车就会执行了):
import urllib.request,os; pf = 'Package Control.sublime-package'; ipp = sublime.installed_packages_path(); urllib.request.install_opener( urllib.request.build_opener( urllib.request.ProxyHandler()) ); open(os.path.join(ipp, pf), 'wb').write(urllib.request.urlopen( 'http://sublime.wbond.net/' + pf.replace(' ','%20')).read())
安装成功的标志是:
此时,perferences 下多了一项:package control
2. 安装clojure插件
运行package control,
输入install packages, 等待准备列表的完成.....。
输入clojure, 会出现相关列表,选自己需要的,等待安装完成。
至此,就可以括号比配,语法高亮显示了。
3. 编译设置
如要编译方便,还需一步努力:
菜单:tools | build system | new build system ....
输入:
"shell_cmd": "java -cp D:/你的文件位置/clojure-1.8.0.jar clojure.main $file",
"encoding": "cp936"
第二行是为了能正确向控制台输出中文。
保存的时候,文件名第一节的名字改为clojure就可以了。
现在,在 tools | build system 里边勾选clojure,下次编译按ctrol+B,就会执行编译、运行的命令。
其实,如果你如前面所述,做好了bat文件。也可以写成:"shell_cmd": "clj $file",其中道理想必你立刻领悟了吧。