问题标签 [reify]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
clojure - Clojure 扩展了关联性
我需要实现自定义关联,但它不适用于多个参数。它只处理第一对。似乎它是直接调用 assoc,而不是通过 core assoc 然后 RT/assoc。
应该如何支持多元?
haskell - 如何反序列化一个 JSON,其中相应的 Haskell 类型在运行时可用作为值?
我正在尝试在 Haskell 中实现一个 DelayedJob 端口(来自 Rails 世界)。
这是我拥有的类型类,它代表一个DelayedJob
以下是我打算如何使用它:
我一直在编写一个相当通用的invokeJob
函数,该函数将从jobs
表中读取一行,查看jobs.jobtype
列并调用版本的正确runJob
版本(即runJob
属于正确类型类实例的函数)。
我有以下内容,但它充满了样板:
本质上,有没有办法deserialise
在运行时动态地约束函数的具体类型,而不必编写这么多样板文件?
javascript - Meteor - IE11 显示空白页
我在 IE11 下收到此错误:
对象不支持在线“for”这个属性或方法:
来自 modules.js 中的 node_modules/meteor/modules/node_modules/reify/lib/runtime/utils.js
。
我试图更新所有内容但没有运气
我的包裹清单如下:
你有什么主意吗?
谢谢。
java - 如何从 Clojure 中的类调用具体化的 Java 接口?通话无法解决
我正在尝试将一些 Java 代码直接翻译成树莓派上的 Clojure。我坚持在方法调用中实现接口 - addListener。
我尝试过使用 reify、proxy 和 deftype。通过 reify,我尝试为编译器提供尽可能多的提示。
这是原始的Java 代码:
这是我翻译的 Clojure 代码:
我总是以同样的错误告终:
IllegalArgumentException 未找到匹配方法:com.pi4j.io.gpio.impl.GpioPinImpl clojure.lang.Reflector.invokeMatchingMethod 类的 addListener (Reflector.java:79)
clojure - 使用宏动态生成 reify 子句
我正在尝试包装一个实现并为包装对象实现的所有接口动态生成 reify 子句。
例如:
我想生成:
或者
取决于是wrapped
只实现BaseInterface
还是两者兼而有之BaseInterface
和AnotherInterface
。
我尝试了类似以下的方法,但它失败了,因为宏在编译时被评估并且我的第二个参数(cond->
表达式)没有它的运行时值:
关于如何实现我正在尝试的任何建议。我想避免 if-else 分支,因为一旦我有更多接口,它就会导致组合爆炸。
clojure - 如何具体化 Prolog 的回溯状态以执行与 Clojure 中的“lazy seq”相同的任务?
这是一个用 Clojure 编写的数字快速排序算法。它基本上是在“The Joy of Clojure”,第 2 版,第 133 页中找到的快速排序算法。我稍微修改了它以(希望)更好的可读性,因为原始感觉有点太紧凑了:
该算法由对 的调用开始qsort
,它将传递的数字列表封装到另一个列表中(从而创建一个包含单个列表的列表),然后调用qsort-inner
.
qsort-inner
有三个值得注意的点:
- 它延迟了实际处理。它不是返回对输入列表进行完整排序的结果,而是返回一个“lazy-seq”,它是一个 (object? thing? thunk ?) 在查询时发出排序序列的下一个数字,即在一个根据需要。计算的状态由悬挂的尾部给出
(cons oldpivot (qsort-inner rightpartz))
- 每当算法沿着排序树“向左”游荡时,都会使用 + 尾递归部分(有关算法的详细信息,请参见下文。
loop
)recur
(qsort-inner rightpartz)
当获得下一个最小数字并且可以“重新排列”排序树时使用完全递归调用(有关算法详细信息,请参见下文。)
借助这个lazy-seq
东西,我们可以让算法一一发出数据:
我正在考虑如何在 Prolog 中执行这种惰性快速排序。事实上,懒惰,至少在这种情况下,在 Prolog 中是通过回溯免费提供的!我们可以要求第一个结果,计算停止,然后通过回溯获得下一个结果。
“懒惰”地对列表进行排序:
必须得到他们所有:
不幸的是,跟踪计算状态的数据结构并不明显:它在堆栈上,不能统一为变量。因此,当我在 Prolog 的顶层时,只能使用这种“懒惰”。
如何捕获计算状态并稍后调用它?
注意快速排序的工作原理
- 给定一个数字列表,该算法选择列表的第一个元素作为枢轴值(图像中的浅绿色)。
- 然后,它构建一棵树,其中那些数字严格小于“左侧”列表中的枢轴值,枢轴本身(深绿色)和那些大于或等于“右侧”列表中的枢轴值的数字。
- 然后它递归地沿着这棵树“向左”移动。
- 这一直持续到小于枢轴值的数字列表为空。
- 此时,枢轴值(此处为 28)是最小的数字,可以输出。
- 这使得列表对一个元素进行排序更小。现在可以通过简单的重新排列操作将树减少一级:现在无左分支和无枢轴的“最深的树节点,但一个”的右分支成为树节点的左分支“最深的树 -节点但两个”。
- 现在可以再次“向左”搜索最小元素。
树结构不需要明确保留,因为它不包含任何信息。相反,交替的“叶子列表”和“枢轴编号”的序列保存在一个列表中。这就是为什么我们最初的“数字列表”。
haskell - 有人可以用*非常*简单的术语解释反射包 API 吗?
我很难理解描述反射包的文档/示例。我是一名命令式编程老手,但也是一名 Haskell 新手。你能引导我完成一个非常简单的介绍吗?
包:https ://hackage.haskell.org/package/reflection
编辑:对于结束这个问题的人:这是对 Haskell 反射的初学者介绍。下面的答案非常好,其他答案也很有用,所以请重新打开。
javascript - npm install 挂在“reify:tailwindcss:timing build:queue Completed in 141ms”
它总是挂在同一个地方:reify:tailwindcss: timing build:queue Completed in [number]ms
我什至试过走开并让它过夜,但无济于事。真正令人沮丧的是,大约一周前,这对我来说是另一个项目,但在过去的两天里,我遇到了这堵墙。
我尝试了几种我在这里看到的方法(每次都删除node_modules
文件夹):
npm config set registry http://registry.npmjs.org/
npm cache clear --force
- 将 NPM 降级到 v6
这是package.json
文件:
这是最后几行输出npm install --verbose