我正在为我的Clojure编码寻找编辑器或IDE,我找到了这个帖子:
Mac OS X上的Clojure编辑器/ IDE建议
但是我有几个问题:
哪个IDE提供了最好的Clojure环境(现在):IntelliJ,Eclipse或NetBeans?
与之前的重量级IDE相比,Aquamacs(我读Rick使用它)有什么优势?
我一直在努力解决Clojure中的Project Euler问题,以便变得更好,而且我已经遇到了几次素数.我的问题是它只是花了太长时间.我希望有人可以帮我找到一种以Clojure-y方式做到这一点的有效方法.
当我拳头做到这一点时,我粗暴地强迫它.这很容易做到.但是计算10001个素数在Xeon 2.33GHz上用了2分钟,对规则来说太长了,一般来说太长了.这是算法:
(defn next-prime-slow
"Find the next prime number, checking against our already existing list"
([sofar guess]
(if (not-any? #(zero? (mod guess %)) sofar)
guess ; Then we have a prime
(recur sofar (+ guess 2))))) ; Try again
(defn find-primes-slow
"Finds prime numbers, slowly"
([]
(find-primes-slow 10001 [2 3])) ; How many we need, initial prime seeds
([needed sofar]
(if (<= needed (count sofar))
sofar ; Found enough, we're done
(recur needed (concat sofar [(next-prime-slow …Run Code Online (Sandbox Code Playgroud) 给定一个函数对象或名称,我该如何确定它的arity?有点像(arity func-name).
我希望有一种方法,因为arity在Clojure中非常重要
我是Clojure的新手,我开始尝试构建应用程序.
到目前为止,我所看到的有关编译Clojure程序的教程的所有内容都涉及交互性.例如,"加载REPL并键入(加载文件"this-or-that")以运行.这很好,但这还不够.
我已经习惯了C语言或Delphi等语言的编辑 - 编译 - 运行习惯,我本能地驱动编辑,然后点击"Mx编译".
问题是"lein uberjar",我理解相当于"make",即使对于一个你好的世界也很难执行.因此,我将不得不弄清楚这种"交互式开发"的东西是如何工作的,停止使用像它快速制作的超级发布,并且只在一天结束时保存它.
我在构建时注意到的另一件事(使用lein uberjar)是我正在处理的小GUI应用程序在编译过程中弹出帧,就像它们在编译时执行一样.这对我来说似乎有点违反直觉; 它并不像我想象的那样类似于"制造".
我知道Lisp的开发方式是在REPL中交互式工作,我并不想改变它:我想适应这种生活方式.不幸的是,我没有看到关于如何这样做的文档形式.例如,如何重置机器的当前状态.只是继续编译各个片段而不能进行某种重置似乎有点麻烦.
我在Clojure(和Lisp)上看到的大多数教程似乎都专注于在REPL中进行黑客攻击.应用程序部署的最佳实践对我来说仍然是一个谜.我的用户只是用户; 他们不会成为将文件加载到REPL的开发人员.
所以这是我的问题:任何有关构建Clojure应用程序的整个过程(包括部署)的良好信息或教程的资源?
(注意:我已经安装并运行了所有先决条件(例如Emacs,Slime,Leiningen等),所以这不是一个问题).
我想在Emacs中编辑Clojure的彩虹parens,因为VI这样做我认为在Emacs中它应该像Mx butterfly之类的东西:)
新手问题,但我真的不明白为什么有很多操作来构建clojure中的地图.
你有conj,assoc和merge,但他们似乎或多或少做同样的事情?
(assoc {:a 1 :b 2} :c 3)
(conj {:a 1 :b 2} {:c 3})
(merge {:a 1 :b 2} {:c 3})
Run Code Online (Sandbox Code Playgroud)
真正的区别是什么,为什么所有这些方法在做或多或少相同的事情时都需要?
我在repl控制台中玩了很多代码,我该如何清除它?我想要一个新的,而不重新启动它.可以这样做吗?
我一直在尝试在Clojure中创建一个用户定义的异常,并且遇到了各种各样的问题.我尝试了这里概述的方法:
http://en.wikibooks.org/wiki/Clojure_Programming/Concepts#User-Defined_Exceptions
(gen-and-load-class 'user.MyException :extends Exception)
Run Code Online (Sandbox Code Playgroud)
但这似乎不适用于Clojure 1.2(或者我做错了......).我的环境是Clojure 1.2,Emacs和lein swank.
谢谢你的帮助!
我在clojure中编写了一个程序,但是有些函数没有参数.将这样的函数编码为"def"而不是没有参数的"defn"会有什么好处?