问题标签 [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.
haskell - 私有数据构造函数上的模式匹配
我正在为网格轴编写一个简单的 ADT。在我的应用程序中,网格可能是规则的(坐标之间有恒定的步长),也可能是不规则的(否则)。当然,规则网格只是不规则网格的一种特殊情况,但在某些情况下(例如,执行一些优化)可能值得区分它们。所以,我声明我的 ADT 如下:
但我不希望用户使用max < min
或使用无序xs
列表创建格式错误的轴。因此,我添加了执行一些基本检查的“更智能”的构造函数:
我不希望用户直接创建网格,所以我不将GridAxis
数据构造函数添加到模块导出列表中:
但事实证明,完成此操作后,我不能再使用模式匹配GridAxis
了。尝试使用它
给出以下编译器错误:
有什么可以解决的吗?
haskell - Haskell 中的常量和模式匹配
如何在 Haskell 中定义宏常量?特别是,我希望在不重叠第二个模式匹配的情况下运行以下代码段。
haskell - Haskell - 在模式匹配中使用常量
假设我有以下代码(文本<>
是简写,实际上不是代码的一部分):
现在我想在 上进行函数模式匹配defaultA
,如下所示:
但是,defaultA
在第一行中变成了一个新变量,而不是意味着参数将等于的条件defaultA
。我知道实现我想要的东西的最好方法是:
有谁知道更好的方法?
haskell - 为什么所有递归模式同义词都被拒绝?
这不会编译(至少在 GHC-7.10.2 中)
当然,对于简单的直接自引用模式,这是有道理的。但是,为什么即使是上述的视图模式介导布局也不可能,有什么根本原因吗?我找不到这个令人信服的;毕竟可以内联视图模式并获得一个完全无害的(嗯......至少是允许的)定义:
那么,由于技术原因,这些同义词是否还没有可用,我们将来会得到它们吗?
haskell - 如何模式匹配列表的末尾?
假设我想删除列表末尾的所有零:
由于参数中的运算符,这不起作用(++)
。如何通过模式匹配确定列表的结尾?
haskell - 我们如何使用冒号表示列表的最后一个值?
假设我们在参数中有一个列表,并且在其头部和尾部分别匹配模式,所以我们使用x:xs
. 这意味着输入被分成一个值x
和一个列表xs
。
因此,冒号之前的任何内容都被视为单个值,而冒号表示法中的最后一个内容将是列表的其余部分,x
删除了单个值。
但是,如果我想将最后一个值与其余值分开怎么办?似乎不能使用这种表示法。
更新:我想我知道如何使用递归找到最后一个数字,但是你不能简单地通过某种模式匹配得到它,这是真的吗?
haskell - 模式同义词不能统一类型级列表中的类型
尝试基于具有类型级别列表的 GADT 定义模式同义词时出现错误。
我设法把它归结为这个例子:
给我:
这是一个错误,还是我做错了什么?
haskell - 如何在 Haskell 中对空向量进行模式匹配?
假设我想使用模式匹配实现列表的长度函数,那么我可以这样做:
我可以用Vector
s 做类似的事情吗?
haskell - 为单向模式同义词手动指定同构
可能没有办法做到这一点,但我只是想问一下以防万一。
我有一个像这样的简单元组的数据类型:
我有一个这样的模式同义词:
匹配T x y
,但给出 y 的平方根。所以:
是
我还希望能够:?
用作构造函数,所以我可以做一些很酷的事情,比如:
评估为
当然,我必须手动指定同构,但是是否有任何语法或语言功能可以让我获得这种行为?
haskell - 向量上的 Haskell 模式匹配
是否可以在向量上使用列表样式模式匹配?
IE
给出错误