抱歉,我是Clojure的新手。我发现到目前为止,对于Clojure世界而言,工具或教程的方式还不够多,因此我下载了Light Table(http://www.lighttable.com/),听起来它应该使它更容易。我使用的是Windows 7 64位,基本的Light Table UI似乎可以正常工作。
为了尝试进一步测试Light Table / Clojure,我还下载了Clojure图形库Quil(https://github.com/quil/quil),但在指示Light Table连接到\ quil-master \ project.clj然后打开并执行以下文件后, \ quil-master \ examples(例如automata.clj或graphics.clj),Light Table会产生我认为是旋转的蓝色“正在思考”图标,该图标被卡住或最终以“ nil”或“ java.lang.Math”结尾。
似乎只有“ example2.clj”起作用(尽管并非总是如此),因为它(通常)会弹出带有变色菱形的窗口。要使其他Quil示例在Light Table中工作,我需要做什么?
(顺便提一下,我还下载了Mire(Github上的另一个Clojure项目),但它完全无法在Light Table中运行。)
最佳答案
该答案适用于LightTable 0.2.0。我尚未尝试新的0.3.0。
尝试选择LightTable和Quil非常有意义。我认为疼痛主要是由于鸡肉和鸡蛋的问题。
LightTable假定了一些偶然的知识(至少在项目管理方面),并且不提供“标准”表示,而是为更具交互性的工作方式提供了一个测试平台。
Quil在标准clojure repl环境中处于舒适状态,并且包装了基础Java项目(处理)的许多复杂性。
同样,Quil的全部目的是生成“副作用”(与其他图形显示一样),而LightTable试图帮助您使用函数及其返回值,而不是函数的副作用。
如果要作为项目连接到quil,请打开example2.clj并执行它(按Ctrl Shift Enter),并获得淡蓝色的“ nil”-恭喜,您的系统正常!
(至少我可以复制完全相同的行为,并且该示例似乎可行)。
第一次执行此操作时,LightTable可能需要一段时间才能下载Quil的所有依赖项(也许是为什么LightTable似乎挂起的原因-或Light Table和Quil有我尚未触发的交互错误)。
“ nil”是Light Table执行文件(在正在运行的项目的上下文中)产生的返回值(请参见脚注)。在某个地方(可能隐藏在全屏光源表的后面),应在运行示例的情况下创建一个新窗口。
执行automata.clj的“ java.lang.Math”值也与我看到的一致。
这里的窍门是生成对defsketch
的调用,example2.clj进行了内联,而automata.clj没有进行内联。
您可以通过调用函数run-rule
来创建草图:
执行文件automata.clj(以加载所有函数定义)后,在编辑器中将以下行添加到文件末尾:
(run-rule 101 {:width 100 :height 100 :scale 4})
将光标放在结束括号后面,然后按Ctrl-Enter执行单个表单。同样,应打开一个新窗口(可能隐藏在其他窗口的后面-尝试使用Alt-Tab切换任务),并运行自动机演示。
将Light Table连接到quil项目并且已经评估了automata.clj,您还可以通过打开“ instarepl”并键入以下命令来获得相同的效果:
(clj-automata.core/run-rule 101
{:width 100 :height 100
:scale 4})
尝试编辑值,看看会发生什么。 (再说一次Quil的全部性质,它在LightTable中虽然不太优雅,但似乎可以使用。)
脚注:
我对LightTable不太熟悉。我本来希望淡蓝色是评估文件中最后一个表单的结果,但事实并非如此。在最后一行使用Cntl-Enter会显示“#'example2 / example2”而不是“ nil”。
我对Quil也不太熟悉,
defsketch
不是宏的常规函数,因此可能与LightTable以一种奇怪的方式进行交互。