reify相关内容

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

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

如何具体化 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 其他开发

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

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

如何验证Prolog的回溯状态以执行与“懒惰序列"相同的任务.来自Clojure?

这是用Clojure编写的数字的快速排序算法.它基本上是在"Clojure的喜悦" ,第二版,第133页中找到的快速排序算法.我对它进行了少许修改,以期(希望)更好的可读性,因为原始文件感觉太紧凑了: (defn qsort-inner [work] (lazy-seq (loop [loopwork work] (let [[ part & ..
发布时间:2020-06-29 19:39:59 其他开发

如何使用`reify`来获取函数的声明?

功能 reify 允许我查找有关给定名称的信息。对于函数,返回的值是 VarI : 数据信息= ... | VarI名称类型(也许Dec)Fixity | ... 在这里我可以检查函数的类型,我也想检查它的声明。然而,在 VarI 的第三个参数中,我总是看到 Nothing 。有没有办法获得函数的声明? 解决方案 从模板haskell在VarI Info构造器上的文 ..
发布时间:2018-06-04 17:03:01 其他开发

使用clojure宏在reify调用中自动创建getter和setter

我试图实现一个巨大的Java接口与众多(〜50)getter和setter方法(一些与不规则的名称)。我认为这将是很好,使用宏减少代码量。因此,不是 (def data(atom {:x nil})) (reify HugeInterface (getX [this](:x @data)) (setX [this v](swap!data assoc:xv))) 我想能写 ..
发布时间:2016-11-27 20:07:43 其他开发语言