clojure相关内容

在 Clojure 中动态访问 Java 字段?

我是 clojure 和 java 的新手. 为了访问 Clojure 中的 Java 字段,您可以执行以下操作: 类名/staticField 与 相同 (.Classname staticField) (如果我错了,请纠正我) 当字段名称保存在变量中时,如何访问静态字段?即: (let [key-stroke 'VK_L键事件键事件/键击]) 我希望 key-stro ..
发布时间:2022-01-02 23:26:10 其他开发

在 clojure 中别名 java 包名称

给定一个 java 包 x.y.z,我可以将 x.y.z 别名为更短的名称,以便我可以将包内的 java 类称为 my-alias.MyJavaClass. 如果这不可能,我可以将所有类import 导入我的命名空间,但我不想手动指定每个类的名称,并且 clojure API 文档没有似乎很清楚是否可以自动import一个包中的所有类. 解决方案 没有任何功能(目前).Java 包位 ..
发布时间:2022-01-02 23:25:58 其他开发

有没有一种快速的方法来检查 Clojure 函数中的 nil args?

在 Phil Hagelberg 的 (technomancy) gripes 文件 他陈述了以下关于 Clojure 的内容: nil 无处不在,导致难以找到源头的错误 现在 Phil 是一个聪明人,他为 Clojure 社区做出了很多贡献,每个人都在使用他的东西 - 所以我认为这值得思考一下. 管理函数的 nil 参数的一种简单方法是抛出错误: (defn myfunc [ ..
发布时间:2022-01-02 23:25:48 其他开发

将映射应用于函数的其余参数

在Clojure中,如果我有一个函数f, (defn f [& r] ... ) 并且我有一个 seq args 带有我想调用 f 的参数,我可以轻松地使用 apply: (应用参数) 现在,假设我有另一个函数 g,它被设计为采用许多可选的命名参数中的任何一个 - 也就是说,其余参数被解构为映射: (defn g [& {:keys [a b] :as m}] ... ) 我通常会通过 ..
发布时间:2022-01-02 23:25:38 其他开发

Clojure 语法问题回复:#^

在 Rich Hickeys 蚂蚁游戏中,他有以下代码: (导入'(java.awt 彩色图形维度)'(java.awt.image BufferedImage)'(javax.swing JPanel JFrame))(defn 填充单元格 [#^Graphics g x y c](多图克(.setColor c)(.fillRect (* x scale) (* y scale) scale ..
发布时间:2022-01-02 23:25:31 其他开发

如何评估 Clojure 中的一系列不纯函数?

如何评估 Clojure 中的(不纯的)函数列表?例如: [#(println "1") #(println "2") #(println "3")] 预期的输出是: 123 有没有办法在不使用宏的情况下实现这一目标?像 (mapevaluate fns-seq) 之类的东西,也许? (我需要它来使用 Clojure.processing API 绘制一些图形.) 解决方案 ..
发布时间:2022-01-02 23:25:25 其他开发

当我将参数传递给 Clojure 符号时会发生什么?

如果我这样做: ('a 'b 'c) 我明白了: c 为什么? 解决方案 Hauleth 发布的链接很好地概述了符号,但您的问题的答案是将符号作为函数调用等同于在第一个参数. ('a 'b) 相当于 (get 'b 'a) get 的文档显示您可以传递可选的第三个参数作为默认值.在您的示例中,'c 被视为默认值并返回,因为 'b 不是地图并且找不到 'a. ..
发布时间:2022-01-02 23:25:19 其他开发

Clojure 中的多态模式验证

我想使用架构来验证请求对象.地图中的一个值决定了哪些其他字段是有效的. 例如,这些都是有效的: { :name "jane" :type :dog :barking true }{ :name "alan" :type :bird :cheeping true }{ :name "bert" :type :fish :swimming true } 有些字段是通用的.但其他的取决于 :t ..
发布时间:2022-01-02 23:25:11 其他开发

(fn [f & args] (apply f args)) 的标准版本或惯用用法

我经常发现自己想要在几个参数集合上应用一个函数集合.使用 map 和一个非常简单的函数很容易做到. (地图(fn invoke [f & args] (apply f args))[- + *][1 2 3][1 2 3][1 2 3])(-1 6 27) 在网络上搜索会发现很多定义类似函数的库,通常称为 funcall 或 invoke.由于 Clojure 对可变参数函数的偏爱,我不禁认为 ..
发布时间:2022-01-02 23:25:04 其他开发

完成最后一条语句后,Clojure 程序没有退出?

什么会导致 Clojure 程序在完成 main 函数中的最后一条语句后没有立即退出? 我所做的只是将 (doall (map ...)) 更改为 (doall (pmap ...)),然后程序突然在退出之前,在完成其任务后挂起好几秒钟.我会在 -main 函数的最后一行放一个 (println "Finished everything!") ,它会打印出来,但仍然没有退出一段时间.什么可能 ..
发布时间:2022-01-02 23:24:54 其他开发

从 JVM 发送 POSIX 信号

如何从 JVM 内部发送 POSIX 信号?(在 Java 或 Clojure 中) 我从没想过这会成为一个问题,直到我尝试使用谷歌搜索它——有很多关于处理信号的信息,但没有关于发送它们的信息. 除了使用 JNI 或调用 shell 执行“kill"之外,还有其他方法可以向 PID 发送信号吗? 解决方案 好的.回答我自己:我查看了建议的库,但我担心在大量代码上引入新的依赖项, ..
发布时间:2022-01-02 23:24:47 Java开发

Clojure 应用程序启动性能

我在 Clojure 中编写了一些小型实用程序应用程序,我使用 Maven 和 maven-shade-plugin 将它们编译成独立的可执行 JAR 文件(“uberjars").这些 uberjar 包含未打包版本的 clojure.jar 和应用程序依赖的其他库(即:commons-cli).它们很方便,因为我可以将它们发送给客户,而无需客户安装 Clojure(所有客户都已经安装了 JRE ..
发布时间:2022-01-02 23:24:40 其他开发

Clojure 生产者 消费者

我正在学习 clojure 并通过生产者消费者示例尝试其并发性和有效性. 这样做了,不得不使用 ref 和 deref 以及观看和取消观看,感觉非常尴尬. 我尝试检查其他代码片段;但是除了使用 Java Condition await() 和 signal() 方法以及 Java Lock 之外,还有更好的重构方法吗?我不想在 Java 中使用任何东西. 这是代码;我想我的用法会 ..
发布时间:2022-01-02 23:24:26 其他开发

为什么 clojure 的 map println 只适用于 repl?

我使用 lein new app test-println 创建一个 clojure 应用程序并使用 lein repl 启动 repl,然后我输入 (map println [1 23 4 5 6]) 并得到预期的结果:test-println.core=>(映射 println [1 2 3 4 5 6])123456(零零零零零零零零) 但是,如果我将 (map println [1 ..
发布时间:2022-01-02 23:24:20 其他开发

Clojure:尝试,捕获也关闭任何文件流的宏(不是 with-open)

更新: 感谢到目前为止的所有帮助.这是我的新代码,它有效.但并不完全是我想要的. 我需要它来返回 java 异常(不要问我为什么).示例: (安全(/1 0)) # 这就是我想要的样子.但是当我使用处理绑定等的其他代码子句时,我得到了 Clojure 异常: (seefe [f(FileReader.(File."C:/txtf.txt"))](.f read))FileNot ..
发布时间:2022-01-02 23:23:55 其他开发

在clojure中如何映射重叠对?

假设我有序列: [1 2 3 4 5] 我想成对地映射它们: [(1, 2), (2, 3), (3, 4), (4, 5)] 我试过了: (map f (partition 2 [1 2 3 4])) 但这会导致成对序列: [(1, 2), (3, 4)] 我怎样才能获得所需的功能? 解决方案 默认情况下 partiton 返回非重叠分区,但您可以提供 step 参数来提 ..
发布时间:2022-01-02 23:23:46 其他开发

更新 Clojure 中的分层/树结构

我有一个 Atom,比如 x: (def x (atom {:name "A":id 1:children [{:name "B":id 2:孩子们 []}{:名称“C":id 3:children [{:name "D" :id 4 :children []}]}]})) 并且需要更新子图,例如: 如果 :id 为 2 ,将 :name 更改为 "Z" 导致更新的 Atom: {:na ..
发布时间:2022-01-02 23:23:36 其他开发