我开始学习Clojure编程语言.在Mac OS X上是否有针对Clojure编辑器/ IDE的建议?
更新2009-09-23:自从我最初发布此问题以来,Clojure空间发生了巨大变化.下面的许多链接,特别是那些与Emacs引用clojure模式的链接都是过时的.我发现的最好的Clojure IDE 是最近发布的Enclojure Netbeans插件(2009-08-25).
更新2010-04-30:关于这个主题的另一篇非常好的文章是Clojure IDEs - Lau B. Jensen 的Grand Tour.另外,对于我自己的clojure开发,我实际上已经转移到了Emacs/swank-clojure.
在Common Lisp中你可以这样做:
(defun foo (bar &key baz quux)
(list bar baz quux))
(foo 1 :quux 3 :baz 2) ; => (1 2 3)
Run Code Online (Sandbox Code Playgroud)
Clojure没有关键字参数.一种选择是:
(defn foo [bar {:keys [baz quux]}]
(list bar baz quux))
(foo 1 {:quux 3 :baz 2}) ; => (1 2 3)
Run Code Online (Sandbox Code Playgroud)
这是太多的嵌套括号,必须一直打字和阅读.它还需要将显式散列映射作为参数而不是平面列表传递.
什么是最惯用的Clojure相当于关键字参数,看起来没有人引发标点炸弹?
你们对Clojure有什么看法?我正在考虑接下来学习它,目前正在使用Erlang并且除了记录惨败之外总体上对它很满意...... Clojure和LISP一样强大吗?
如何在Clojure中执行特定于系统的命令并获得响应?例如,假设我们在Linux机器上,我如何调用top或free获取结果以进行进一步处理?
我在Clojure中找到使用命名空间的好建议和常用做法时遇到了麻烦.我意识到命名空间与Java包不同,所以我试图梳理Clojure中的约定,这似乎很难确定.
我想我非常清楚如何将函数分成clj文件,甚至大致如何将这些文件组织到目录中.但除此之外,我无法为我的开发环境找到机制.一些相互关联的问题:
谢谢...
我非常喜欢的一件事是阅读不同的编程语言.目前我正在学习Scala,但这并不意味着我对Groovy,Clojure,Python和其他许多人都不感兴趣.所有这些语言都具有独特的外观和一些特征.在clojure的情况下,我不理解这些设计决策之一.据我所知,Clojure非常强调其功能范式,并且几乎迫使你尽可能地使用不可变的"变量".因此,如果您的一半值是不可变的,为什么语言会动态输入?clojure网站说:
首先,Clojure是动态的.这意味着Clojure程序不仅仅是您编译和运行的东西,而是您可以与之交互的东西.
那听起来很奇怪.如果程序已编译,则无法再更改它.当然你可以与它"互动",这就是用户所使用的UI,但网站当然并不意味着整洁的"动态"GUI.
Clojure如何从动态类型中受益
我的意思是Clojure的特殊情况,而不是动态类型的一般优点.
动态类型系统如何帮助改进函数式编程
再一次,我知道没有溢出"int a;"的乐趣.整个源代码,但类型推断可以缓解很多痛苦.因此,我想知道动态类型如何支持函数式语言的概念.
paradigms functional-programming language-design clojure dynamic
我正在寻找一个函数,它返回序列中的第一个元素,其中fn的计算结果为true.例如:
(first-map (fn [x] (= x 1)) '(3 4 1))
Run Code Online (Sandbox Code Playgroud)
上面的假函数应该返回1(列表中的最后一个元素).在Clojure中有类似的东西吗?
所以,我正在深入探讨Clojure.Spec.
我偶然发现的一件事是,在哪里提出我的规格.我看到三个选择:
在大多数示例中,我发现在线,有一个大spec.clj文件,在主命名空间中需要.它具有所有(s/def),并(s/fdef)为所有的"数据类型"和功能.
优点:
魂斗罗:
你可以把你(s/def)和(s/fdef)旁边你的产品代码.这样,实现和规范共存于同一个命名空间中.
优点:
魂斗罗:
然后我想,也许Specs是第三种代码(在生产和测试之后).所以也许他们应该拥有自己的命名空间结构,如下所示:
?? src
? ?? package
? ?? a.clj
? ?? b.clj
?? test
? ?? package
? ?? a_test.clj
? ?? b_test.clj
?? spec
?? package
?? a_spec.clj
?? b_spec.clj
Run Code Online (Sandbox Code Playgroud)
优点:
魂斗罗:
谁有使用其中一种方法的经验?
还有其他选择吗?
您如何看待不同的选择?
成熟的Clojure Web框架目前有哪些选择?我正在寻找某种特征矩阵,告诉我流行的框架支持什么程度,包括:
clojure ×10
lisp ×2
binding ×1
clojure.spec ×1
common-lisp ×1
conventions ×1
dynamic ×1
editor ×1
frameworks ×1
ide ×1
leiningen ×1
macos ×1
namespaces ×1
paradigms ×1