clojure相关内容

惰性分区-按

我有一个项源,希望单独处理具有相同键函数值的项的运行。在Python中,这将如下所示 for key_val, part in itertools.groupby(src, key_fn): process(key_val, part) 此解决方案完全是惰性的,即如果process不尝试存储整个part的内容,代码将在O(1)内存中运行。 Clojure解决方案 (dos ..
发布时间:2022-09-01 15:37:12 其他开发

&;Quot;透明&;;宏可能吗?

我想编写一个Clojurewith-test-tags宏,它包装一堆表单,并向每个deftest表单的名称添加一些元数据-具体地说,就是向:tags键添加一些内容,这样我就可以使用一个工具来运行具有特定标记的测试。 with-test-tags的一个明显实现是递归遍历整个身体,根据我的发现修改每个deftest表单。但我最近一直在阅读let over Lambda,他提出了一个很好的观点:不需要 ..
发布时间:2022-07-24 18:53:07 其他开发

Clojure&;问题包含&;#39;

我正在使用CloseBox浏览一些Clojure教程,并输入了以下代码: user> (def stooges (vector "Moe" "Larry" "Curly")) #'user/stooges user> (contains? stooges "Moe") false 这不应该评估为真吗?如有任何帮助,我们不胜感激。 推荐答案 向量类似于数组。contains?如 ..
发布时间:2022-06-10 23:19:22 其他开发

如何重写现有对象的方法?

该对象是用reify创建的,我需要重写它的一个方法。我发现的唯一方法是使用经典的OO修饰符和reify的另一种用法。还有别的办法吗? 推荐答案 恐怕您必须制作一个修饰器,因为Clojure没有默认情况下将一个对象的行为委托给另一个对象的内置构造(我认为这称为原型继承)。 但这并不意味着它必须是单调乏味的--您可以使用宏和反射来自动化大部分工作。以下是概念的证明: (defm ..
发布时间:2022-04-07 12:58:44 其他开发

在Clojure中为对象的特定实例创建代理

我正在尝试创建一个代理对象,它使用闭包(let/Proxy)向对象的一些方法添加一些功能。我可以做到这一点,但不幸的是,我必须重写原始对象中的所有方法,否则我会得到一个UnsupportedOpreationException。下面是一个示例: ;;实物 (def realcon (java.sql.DriverManager/getConnection "jdbc:h2:tcp://loc ..
发布时间:2022-04-01 13:26:54 其他开发

像Clojure中的assoc一样,是否有python函数可以返回添加了新键的新dict?

我在编写Clojure之后编写了一段时间的python,我有点生疏了,但我正在以一种更实用的方式来处理它。为了遵循我在Clojure中使用的模式,我想使用map(或列表理解)和类似于assoc的东西在列表中的每个词典中设置关键点。 我有一个记录列表,我想用列表理解重新构造它们。 记录如下所示: { "timestamp":1232435235315, "data": { ..

如何在 JAR 中捆绑原生库和 JNI 库?

有问题的图书馆是东京内阁. 我希望将本机库、JNI 库和所有 Java API 类放在一个 JAR 文件中,以避免重新分发的麻烦. 似乎有在 GitHub 上尝试这样做,但是 不包含实际的原生库,仅包含 JNI 库. 它似乎是特定于 Leiningen 的原生依赖插件(它不能作为可再分发). 问题是,我可以将所有内容捆绑在一个 JAR 中并重新分发吗?如果是,怎么做? ..
发布时间:2022-01-25 20:40:52 Java开发

在 Clojure 中添加向量的惯用方法是什么?

添加到列表很容易: 用户=>(conj '(:bar :baz) :foo)(:foo :bar :baz) 附加到向量很容易: 用户=>(conj [:bar :baz] :foo)[:酒吧:巴兹:富] 我如何(惯用地)添加到向量,同时取回向量?这不起作用,因为它返回的是序列,而不是向量: 用户=>(缺点:foo [:bar:baz])(:foo :bar :baz) 这很难看(IM ..
发布时间:2022-01-22 11:20:04 其他开发

如何从 Clojure 早期的函数返回?

Common Lisp 有 return-from;当您想从函数中提前返回时,Clojure 中是否有任何类型的 return? 解决方案 clojure 中没有明确的 return 语句.如果你愿意,你可以使用 catch/throw 组合来破解一些东西,但是由于 clojure 比普通的 lisp 功能更强大,你实际上需要在一些嵌套块的中间提前返回的机会比 CL 小得多.我能看到 re ..
发布时间:2022-01-19 14:51:38 其他开发

Clojure 中的(布尔值.假)

根据 http://hyperpolyglot.org/lisp,Clojure 中唯一的谎言是 false 和 nil.确实,令人惊讶的是,(Boolean.false) 不是假的: 用户=>(如果(布尔值.假)1 2)1用户=>(不是(布尔值.假))错误的用户=>(假?(布尔值.假))错误的 另一方面,它以某种方式是错误的: 用户=>(类错误)java.lang.Boolean用户=>( ..
发布时间:2022-01-16 12:29:34 其他开发

存储后端如何影响 Datomic?

我应该如何选择 Datomic 的后端存储服务? 选择 DynamoDB 而不是 Postgres 是偏好问题,还是每个选项都有不同的权衡?如果有,它们是什么? 解决方案 存储服务要求 Datomic 的存储服务一般应满足 3 个要求: 实现键值存储语义:使用索引键的值进行高效的读/写访问 支持一致读取.例如阅读你自己的作品.理想情况下,无争用/无锁读取. 支持条件看 ..
发布时间:2022-01-15 17:16:42 其他开发

如何具体化 Prolog 的回溯状态以执行与“lazy seq"相同的任务?来自 Clojure?

这是一个用 Clojure 编写的数字快速排序算法.它基本上是 "The Joy of Clojure",第 2 版,第 133 页中的快速排序算法.我稍微修改了它以(希望)更好的可读性,因为原始感觉有点太紧凑了:p> (defn qsort-inner [工作](惰性序列(循环[循环工作](让 [[ part & partz ] loopwork ](if-let [[pivot & valu ..
发布时间:2022-01-12 10:30:47 其他开发