问题标签 [clojure-core.match]

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.

0 投票
2 回答
562 浏览

clojure - 使用 clojure.core.match 时“不能让限定名称”

我正在使用clojure.core.match并看到以下错误:

不能让限定名

我的代码类似于:

JavaMsgType/TYPE_1类的来源:

此错误是什么意思,我该如何解决?

0 投票
1 回答
163 浏览

clojure - Clojure核心与变体匹配错误

我正在尝试使用带有 core/match 和 core/typed 的 clojure来解决这个SICP 练习。

我有点关注 Jeanine Adkisson 的“变体不是工会”的演讲。

这是我到目前为止得到的:

Structure 类型是一个变体:它要么是一个权重,它只是一个数字(它的形式为 [:weight weight],其中 weight 是一个数字),要么它是一个移动设备(它具有 [:mobile mobile] 的形式,其中移动是移动类型的东西)。

它类型检查和总权重功能适用于一个简单的输入:一个由两个权重组成的移动设备。

但是正如您所看到的,对于具有移动设备分支的移动设备来说,它会失败。

由于某种原因,它与 [:mobile mobile] 案例不匹配。知道我在做什么错吗?

0 投票
3 回答
164 浏览

clojure - 这是一个 clojure.core.match 错误还是只是我?

在第一个片段中,我希望它返回:a1

奇怪的。

这有效:

这是预期的行为吗?

0 投票
1 回答
99 浏览

clojure - 如何将匹配的:或绑定到 core.match 中的变量

如何将匹配的:or或绑定到 core.match 中的变量?

0 投票
1 回答
235 浏览

clojure - Core.match 与地图键/值上的守卫匹配

是否可以使用 core.match 执行以下操作(愚蠢的示例):

??

我希望能够在地图上进行模式匹配,但是有:guard #(< % 10000)一点吗?即根据地图中键的值在模式中有一个功能吗?

这可能吗,我知道我可以在向量上执行此操作,但无法计算出语法或者是否可以使用地图。

我知道我可以使用解构,但我想知道是否可以使用模式匹配。

谢谢

0 投票
1 回答
46 浏览

clojure - 这个 core.match 绑定示例是如何工作的?

看这个例子

我无法理解一些事情:

  1. 是否1匹配x并绑定到b
  2. 是否2匹配y并绑定到a
  3. 假设我得到了正确的以上两点,为什么要返回a而不是b考虑它们都匹配[x y]. 是因为它是最后一个子句吗?
0 投票
2 回答
249 浏览

clojure - 如何在匹配子句中重用匹配模式?

我需要匹配两种元组并从中生成地图。

两者都有一个关键字和一个字符串。可以有第三项(语言代码)。

我只需要匹配那些关键字是:fooor:bar并决定我将使用clojure.core.match

那行得通,但我想:guard l10n-key在不同的子句中重用匹配模式。所以我想我可以使用一些语法引用和取消引用拼接:

然而,defn表达式崩溃:

我究竟做错了什么?

0 投票
1 回答
85 浏览

clojure - 为什么匹配地图时匹配子句的顺序很重要?

给定xand y,两者都旨在匹配具有相同匹配子句的映射。唯一的区别在于子句的顺序:

我想匹配{:a 1 :b 2}

该函数y已经为给定的地图产生了预期的结果。

诚然,我可能不明白算法是如何工作的,但我的印象是,它clojure.core.match会以某种方式解决,{:a _ :b _}比它更具体{:a _},因此会先尝试。

这就是为什么我惊讶地发现匹配子句的顺序似乎很重要。

为什么会这样或者我做错了什么?