问题标签 [non-exhaustive-patterns]

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 投票
1 回答
5268 浏览

haskell - 例外:模式匹配失败 Haskell

我正在尝试实现 Haskell 的标准单词功能。我正在使用 State Monad 来解决问题。

我的代码是:

当我做:

我收到此错误:

代码在 ghci 中加载,没有任何错误。我究竟做错了什么?

0 投票
1 回答
164 浏览

haskell - Haskell:修复函数中的非详尽模式

我有一个程序,它遍历 AST 并返回使用的函数和变量的映射以及它们发生的次数。这里是:

该程序在大多数情况下运行甚至工作,但是当我使用“Paren”(如 t3)在 AST 上调用“vars”时,我收到以下错误:

我不确定如何解决这个问题,我可以使用一些帮助。顺便说一句,我正在使用的构造函数可以在http://hackage.haskell.org/packages/archive/haskell-src-exts/1.0.1/doc/html/Language-Haskell-Exts-Syntax.html找到#t:Exp 以防万一。

提前致谢!

0 投票
1 回答
1495 浏览

haskell - 在haskell中计算数组的长度 - 非详尽模式错误

我已经在这里和网上搜索过,但我找不到任何似乎可以回答这个问题的东西。我才刚刚开始在大学里使用 Haskell 开发一个模块,并且在定义一个计算数组长度的函数时遇到了问题(本质上是预先存在的长度函数)。

在我的讲义中,函数如下:

这对我来说很有意义,它似乎没有遗漏任何东西,而且我在其他地方也看到过类似的东西,但是在 GHCi 中它抛出了一个“非详尽模式”错误,我不能一辈子我弄清楚为什么。

任何帮助将不胜感激,谢谢

0 投票
1 回答
454 浏览

haskell - GHC 抱怨类型检查器强制执行的非详尽模式

我有以下代码

编译或解释时-Wall给出以下警告:

通常这是可以预料的。通常,即使我可以推断出我的模式将涵盖所有可能的情况,编译器也无法在不运行代码的情况下知道这一点。然而,所提供模式的详尽性由在编译时运行的类型检查器强制执行。添加 GHC 建议的模式会产生编译时错误:

所以我的问题是:GHC 警告是否不能很好地与 GHC 扩展配合使用?他们应该互相了解吗?此功能(考虑到扩展的警告)是否计划在未来版本中发布,或者实现此功能是否存在一些技术限制?

似乎解决方案很简单;编译器可以尝试将假定不匹配的模式添加到函数中,并再次询问类型检查器是否建议的模式类型正确。如果是,那么它确实可以作为缺失模式报告给用户。

0 投票
3 回答
737 浏览

haskell - 函数中的非穷举模式-Haskell

我写了一个函数,将元素插入二叉树,但每次我尝试运行它时,我都会在函数中得到一个非详尽的模式。

你能给我一些提示吗?谢谢

0 投票
1 回答
115 浏览

haskell - 功能错误中的非详尽模式

在 haskel 中,我遇到了一个错误,不知何故我找不到正确的解决方案。我得到了错误和我的代码:

我的代码:

和我的控制台日志:

任何帮助都是有用的。谢谢。

0 投票
0 回答
204 浏览

haskell - 创建中缀运算符

我遇到了一个我似乎无法解决的小问题,现在已经解决了几个小时无济于事。

我已经定义了一个数据类型,Hand。

我正在使用的另一种类型:

我正在尝试创建一个中缀运算符,它将添加两只手并返回第三只手。

当我对此进行快速检查测试以查看它是否具有关联性时,我在几次后出现错误。错误说:

它返回给我的三个参数是空的(总是这个作为第一个),然后是一只大手作为第二个和第三个参数。例如:错误图像。 另外,quickchest 测试看起来像((hand1 <+ hand2) <+ hand3) == (hand1 <+ (hand2 <+ hand3)).

我猜我没有足够的案例来处理所有可能的情况?我只是不知道出了什么问题。:(

请不要直接解决,提示会做!

编辑:作为一个有用的评论者建议并添加了一个案例,当两只手都是空的时,它会返回空手。现在一切正常。:) 为了消除混乱,我早些时候宣布了什么是空手。Empty 和 empty 在我的代码中是两个不同的东西,我“正确”地使用了它们。:)

0 投票
2 回答
2719 浏览

haskell - Haskell:非穷举模式

我正在为明天的测试进行培训,以完成对函数式编程的介绍,但有一件事我不明白。

每当我有这样的程序时:

他所做的是从列表中取出第一个元素并继续其余的。每当只剩下一个时,xs应该[]依次触发test [] = []。但是每当我运行这个算法时,我都会得到一个错误。Exception: <interactive>:20:5-16: Non-exhaustive patterns in function test.

我在网上找不到明确的解释。有人可以给我一个链接,其中解释清楚或向我解释吗?

0 投票
1 回答
168 浏览

haskell - Haskell 不竭力

我想知道是否有人可以帮助我确定 Haskell 代码中不详尽的部分?我看不出如何在列表末尾不满足基本情况。

多谢

强尼

0 投票
2 回答
559 浏览

haskell - 函数haskell中的非详尽模式

我想我错过了有一个元素列表但我找不到写它的方法有人可以帮助我的情况吗?