Tag: clojure

是不是core.async违背Clo​​jure的原则?

我已经看到许多Clojure程序员对新的core.async库充满热情,虽然看起来很有趣,但我很难看出它是如何符合Clojure原则的,所以我有这样的问题: 它在任何地方都使用可变状态,因为函数名称带有感叹号,比如alt !, put !,> !,等等。 如果你从某个频道input或取得一个值,则该频道将被修改。 Clojure更喜欢不可变的数据结构,纯函数等等,这不是违背了吗? 还是core.async只能用在可变的东西根本无法避免的地方? 由于“go”是一个macros(因此修改代码结构)并确保“<!” 直接用在一个转换块中,不可能使用“<!” 在另一个函数里面,像这样: (defn take-and-print [c] (println (<! c))) (def ch (chan 1)) (>!! ch 123) (go (take-and-print ch)) Assert failed: <! used not in (go …) block 在我看来,这阻止了简单性和可组合性。 为什么这不是问题? 也许作为前两个问题的结果,core.async的许多代码使用较低级别的构造,如loop / recur,而不是map / filter / reduce。 这不是一个倒退吗? 我错在哪里? 提前致谢。

我如何在Clojure中抛出exception?

我想抛出一个例外,并有以下几点: (throw "Some text") 但似乎被忽略。

为什么Clojuredynamicinput?

我非常喜欢的一件事是阅读不同的编程语言。 目前我正在学习Scala,但这并不意味着我对Groovy,Clojure,Python等等不感兴趣。 所有这些语言都有独特的外观和感觉以及一些特征。 在clojure的情况下,我不明白这些devise决定之一。 据我所知,Clojure非常重视它的function范例,并且强迫你尽可能使用不可变的“variables”。 所以如果你的一半数值是不变的,为什么这个语言是dynamicinput的呢? clojure网站说: 首先,Clojure是dynamic的。 这意味着一个Clojure程序不只是你编译和运行的东西,而是你可以与之交互的东西。 那听起来很奇怪。 如果一个程序被编译,你不能再改变它了。 当然,你可以与它“交互”,这就是用户界面,但网站当然不意味着一个整洁的“dynamic”graphics用户界面。 Clojure如何从dynamictypes中受益 我的意思是Clojure的特殊情况,而不是dynamictypes的一般优点。 dynamictypes系统如何帮助改进函数式编程 再一次,我知道不会溢出“int a”的乐趣。 所有的源代码,但types推断可以缓解很多的痛苦。 因此,我只想知道dynamictypes如何支持function语言的概念。

如何升级leiningen的nrepl版本?

我使用leiningen和emacs + cider进行clojure开发。 前几天,当我通过emacs软件包pipe理器升级cider后,当我运行Mx cider-connect或Mx cider-jack-in时,我收到以下警告消息。 ; CIDER 0.9.0snapshot (package: 20150222.137) (Java 1.8.0_31, Clojure 1.6.0, nREPL 0.2.6) WARNING: CIDER requires nREPL 0.2.7 to work properly user> 警告信息清楚地表明,我必须将nrepl升级到0.2.7,但是,我不知道如何。 我通过brew安装了leiningen ,它使用nrepl 0.2.6 。 $ lein repl nREPL server started on port 53218 on host 127.0.0.1 – nrepl://127.0.0.1:53218 REPL-y 0.3.5, nREPL 0.2.6 Clojure 1.6.0 Java HotSpot(TM) 64-Bit Server […]

为什么clojure有这么多的地图构build函数?

新手的问题,但我真的不明白为什么有这么多的操作来构build地图clojure。 你有连接,联合和merge ,但他们似乎或多或less做同样的事情? (assoc {:a 1 :b 2} :c 3) (conj {:a 1 :b 2} {:c 3}) (merge {:a 1 :b 2} {:c 3}) 什么是真正的差异,为什么所有这些方法所需要的时候或多或less都是一样的东西?

Clojure应用程序中的资源

我在我的Clojure项目(一个GUI应用程序)中使用了Leiningen,并在项目根目录下创build了一个“resources”目录来保存我的应用程序使用的图像。 当我在testing期间在本地运行我的应用程序时,我使用相对path“resources / logo.png”来获取图像,并且工作正常。 但是当我使用Leiningen构build一个uberjar时,Leiningen把来自resources文件夹的文件放在JAR的根文件夹中,所以我对资源文件的引用不再工作。 使用Leiningen访问这样的资源的正确方法是什么?

我可以清洁repl吗?

我在一个repl控制台上玩了很多代码,我怎么能清除它? 我想要一个新的没有重新启动它。 可以这样做吗?

Clojure:半嵌套的序列

我有一个embedded列表的向量列表,如下所示: (([1 2]) ([3 4] [5 6]) ([7 8])) 我所知道的并不理想。 我想把它弄平([1 2] [3 4] [5 6] [7 8]) 。 压平不起作用:它给我(1 2 3 4 5 6 7 8) 。 我该怎么做呢? 我想我需要创build一个新的列表基于每个列表项的内容 ,而不是项目,这是我无法find如何从文档做的一部分。

在Windows上的Clojure IDE?

你如何在Windows系统上开发Clojure?

为Clojure编码select一个IDE /编辑器

我正在寻找一个编辑器或者我的Clojure编码的IDE,我发现这个线程: 在Mac OS X上的Clojure编辑器/ IDEbuild议 不过,我有几个问题: 哪个IDE提供最好的Clojure环境(现在):IntelliJ,Eclipse还是NetBeans? Aquamacs(我读Rick使用它)比以前的重量级IDE有什么优势?