14

我很抱歉我是 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 一起运行。)

4

1 回答 1

6

这个答案适用于 LightTable 0.2.0。我还没有尝试过新的 0.3.0。

尝试选择 LightTable 和 Quil 非常有意义。我认为疼痛主要是由于鸡和蛋的问题。

  • LightTable 假定了一些 clojure 知识(至少在项目管理方面),并且不提供“标准”repl,而是提供更具交互性的工作方式的测试平台。
  • Quil 在标准的 clojure repl 环境中假定舒适,并包装了底层 java 项目(处理)的许多复杂性。
  • 此外,Quil 的全部目的是生成“副作用”(整个其他图形显示),LightTable 试图帮助您使用函数及其返回值,而不是函数的副作用。

如果您作为项目连接到 quil,打开 example2.clj 并执行它(Ctrl Shift Enter)并得到一个浅蓝色的“nil” - 恭喜您有一个工作系统!(至少我可以复制完全相同的行为,并且该示例似乎有效)。

第一次这样做时,LightTable 可能需要一段时间才能下载所有 Quil 的依赖项(也许是 LightTable 出现挂起的原因 - 或者 Light Table 和 Quil 有一个我尚未触发的交互错误。)

“nil”是 Light Table 执行文件(在运行项目的上下文中)产生的返回值(见脚注)。应该在某个地方(可能隐藏在全屏 Light Table 后面)创建一个运行示例的新窗口。

执行automata.clj的“java.lang.Math”值也和我看到的一致。这里的诀窍是生成对defsketchexample2.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 以一种奇怪的方式交互。

于 2013-02-25T19:13:09.743 回答