问题标签 [pattern-synonyms]

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 回答
592 浏览

haskell - 私有数据构造函数上的模式匹配

我正在为网格轴编写一个简单的 ADT。在我的应用程序中,网格可能是规则的(坐标之间有恒定的步长),也可能是不规则的(否则)。当然,规则网格只是不规则网格的一种特殊情况,但在某些情况下(例如,执行一些优化)可能值得区分它们。所以,我声明我的 ADT 如下:

但我不希望用户使用max < min或使用无序xs列表创建格式错误的轴。因此,我添加了执行一些基本检查的“更智能”的构造函数:

我不希望用户直接创建网格,所以我不将GridAxis数据构造函数添加到模块导出列表中:

但事实证明,完成此操作后,我不能再使用模式匹配GridAxis了。尝试使用它

给出以下编译器错误:

有什么可以解决的吗?

0 投票
1 回答
267 浏览

haskell - Haskell 中的常量和模式匹配

如何在 Haskell 中定义宏常量?特别是,我希望在不重叠第二个模式匹配的情况下运行以下代码段。

0 投票
2 回答
555 浏览

haskell - Haskell - 在模式匹配中使用常量

假设我有以下代码(文本<>是简写,实际上不是代码的一部分):

现在我想在 上进行函数模式匹配defaultA,如下所示:

但是,defaultA在第一行中变成了一个新变量,而不是意味着参数将等于的条件defaultA。我知道实现我想要的东西的最好方法是:

有谁知道更好的方法?

0 投票
1 回答
192 浏览

haskell - 为什么所有递归模式同义词都被拒绝?

这不会编译(至少在 GHC-7.10.2 中)

当然,对于简单的直接自引用模式,这是有道理的。但是,为什么即使是上述的视图模式介导布局也不可能,有什么根本原因吗?我找不到这个令人信服的;毕竟可以内联视图模式并获得一个完全无害的(嗯......至少是允许的)定义:

那么,由于技术原因,这些同义词是否还没有可用,我们将来会得到它们吗?

0 投票
1 回答
1616 浏览

haskell - 如何模式匹配列表的末尾?

假设我想删除列表末尾的所有零:

由于参数中的运算符,这不起作用(++)。如何通过模式匹配确定列表的结尾?

0 投票
2 回答
214 浏览

haskell - 我们如何使用冒号表示列表的最后一个值?

假设我们在参数中有一个列表,并且在其头部和尾部分别匹配模式,所以我们使用x:xs. 这意味着输入被分成一个值x和一个列表xs

因此,冒号之前的任何内容都被视为单个值,而冒号表示法中的最后一个内容将是列表的其余部分,x删除了单个值。

但是,如果我想将最后一个值与其余值分开怎么办?似乎不能使用这种表示法。

更新:我想我知道如何使用递归找到最后一个数字,但是你不能简单地通过某种模式匹配得到它,这是真的吗?

0 投票
1 回答
122 浏览

haskell - 模式同义词不能统一类型级列表中的类型

尝试基于具有类型级别列表的 GADT 定义模式同义词时出现错误。

我设法把它归结为这个例子:

给我:

这是一个错误,还是我做错了什么?

0 投票
1 回答
1149 浏览

haskell - 如何在 Haskell 中对空向量进行模式匹配?

假设我想使用模式匹配实现列表的长度函数,那么我可以这样做:

我可以用Vectors 做类似的事情吗?

0 投票
1 回答
92 浏览

haskell - 为单向模式同义词手动指定同构

可能没有办法做到这一点,但我只是想问一下以防万一。

我有一个像这样的简单元组的数据类型:

我有一个这样的模式同义词:

匹配T x y,但给出 y 的平方根。所以:

我还希望能够:?用作构造函数,所以我可以做一些很酷的事情,比如:

评估为

当然,我必须手动指定同构,但是是否有任何语法或语言功能可以让我获得这种行为?

0 投票
3 回答
1537 浏览

haskell - 向量上的 Haskell 模式匹配

是否可以在向量上使用列表样式模式匹配?

IE

给出错误