我在克洛尔做了我的第一个功能程序。我有一些问题,弄清楚如何在列表中、列表中的每个列表中逐个遍历,并在保留返回值的同时对其进行操作。我确信这个问题来自于我对Clojure和functional的不熟悉,并希望有人能解释一下做以下工作的最佳方法:
psuedo-code algorithm:
for each lst in list
for each item in lst
return_values.append = do_something(item)
我首先尝试嵌套两个doseq函数,然后调用我的do_something函数,该函数可以调用项上的函数,但没有保存返回值。然后
我一直在尝试将Clojure设置为使用Overtone。
然而,当我试图在Project文件夹中启动Lein时,我收到了这样的消息:
Exception in thread "main" java.lang.Exception: EOF while reading string (project.clj:5)
at clojure.lang.Compiler.load(Compiler.java:5864)
at clojure.lang.Compiler.loadFile(Compiler.java:5821)
at clojure.lang.RT$3
我正在Ubuntu(Linux)操作系统中学习clojure。我正面临着一个意想不到的错误。我的系统一切都很好。当我在不同的系统中移动相同的代码和数据时,会出现一个错误。我按照命令运行:
$ lein run
Exception in thread "main" java.lang.ClassNotFoundException: java.util.Base64, compiling:(com/data/common/jwt.clj:86:23)
at clojure.lang.Compiler.analyzeSeq(Compiler.java:6875)
a
在我的clojure文件的开头,我有一系列的defs,其中一些仅仅是垫脚石defs,也就是说,不应该在文件的下面使用。也就是说。
def src-folder (File. "src")
def lib-folder (File. src-folder "lib")
def dist-folder (File. src-folder "bin")
;; I only care for the lib-folder and dist-folder beyond this point
在Clojure中做这件事的正确方法是什么?
今天,我尝试用嵌套的速记函数计算Clojure表达式,但它不允许我这样做。
这句话是:
(#(+ % (#(+ % (* % %)) %)) 5) ; sorry for the eye bleed
产出如下:
IllegalStateException Nested #()s are not allowed clojure.lang.LispReader$FnReader.invoke (LispReader.java:630)
...and a bunch of other garbage
我买了一个Rasperry Pi 512MB的版本(2012年末),并在上面安装了。当我使用Leiningen创建一个新的Clojure项目并通过执行lein repl启动nREPL时,它需要两分钟多一点的时间(大约130 - 140秒),直到REPL被初始化并可以使用。
当直接启动JAR文件时,java -jar clojure-1.4.0/clojure-1.4.0会在25秒内启动REPL。
我使用的是快速的10类SD卡(SanDisk Extreme最高可达30MB/s)。为什么在nRepl中使用Leiningen与启动JAR文件之间的差异如此之大?使用Leiningen for the