问题标签 [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 回答
123 浏览

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

我有一个 Evol 类,并希望将 distanceMatrix 的实例应用于我的 MolSeq 类型的列表。函数 molseqDistMat 可以按需要工作,但我无法理解尝试运行 distanceMatrix [Molseq] 时遇到的错误。我了解错误的含义,但找不到异常。这是错误。

这是代码。

0 投票
2 回答
187 浏览

haskell - 非详尽的模式匹配只是因为我离开了`otherwise =`?

我在 Haskell 中编写了一个简单的程序,可以玩The Rust Programming Language book 中描述的猜谜游戏

它是这样工作的:程序将生成一个介于 1 和 100 之间的随机整数。然后它会提示玩家输入猜测。输入猜测值后,会提示猜测值是过低还是过高。如果猜对了,游戏将打印祝贺并退出。

这是我写的:

该代码有效,但 GHC 给了我一个警告,"Pattern match(es) are non exhaustive. In an equation for 'respond': Patterns not matched: _ _"

我用这两个下划线来表示Ints我作为函数参数的两个respond。我不明白的是我没有涵盖哪种情况。那些不是Maybe Ints 或任何特殊的东西——该函数需要两个 valid Ints,所以我只需要处理整数——而且我认为没有任何数字不能被视为大于、小于或等于另一个?

这只是 GHC 假设我没有涵盖所有情况,因为我没有添加最后的otherwise =后卫吗?即使它在逻辑上涵盖了所有情况。


另外,如果您对如何编写更惯用的 Haskell 有任何提示,我将不胜感激。我还在学习基础知识。

0 投票
2 回答
243 浏览

haskell - 非穷举模式,Haskell

我正在尝试编写函数 tails,它通过以下方式将字符串转换为字符串列表:

这是我的实现:

正如标题所暗示的,这个函数中存在非详尽的模式。不幸的是,我不明白这是怎么回事。

我是 Haskell 的新手......任何帮助将不胜感激!

0 投票
3 回答
729 浏览

pattern-matching - 致命错误:异常 Match_failure("main.ml", 8, 15)

这是我的代码:

然后它告诉我:

我不明白这是什么意思,它似乎并没有表明我的错误来自哪里。

此外,我收到以下警告:

我怎样才能摆脱这个警告?

我的意思是,在我看来,说我错过了这个案例并不意味着什么N(_,_,_),但是这个案例总是被处理的,那么为什么编译器告诉我这个案例不匹配呢?

0 投票
1 回答
132 浏览

haskell - 使用“否则”时如何获得“非详尽模式”异常

我试图证明表格的数字p_1 * ... * p_k + 1并不都是素数,为此,我编写了这段代码

我得到这个例外:

*** 例外:Ch3.hs:(11,2)-(13,31):功能标记中的非详尽模式

但是,在函数的定义中mark,我使用otherwise了 ,所以怎么可能存在函数的定义没有为此指定任何规则的情况。我的意思是我认为使用关键字otherwise可以确保没有未用尽的模式。

0 投票
1 回答
1891 浏览

haskell - Haskell中的函数异常中的非详尽模式

我有这个代码:

输入: foo "4a5b"

输出: "aaaabbbbb"

此行if (digitToInt(x)) == 0检查数字是否为 0,如果是,则它将与字符串的其余部分一起扩展:

例子:

输入: foo "00004a5b"

输出: "aaaabbbbb"

我添加 else if (digitToInt(x)) /= 0以检查其他情况。

但是它给了我:

错误。我在这里错过了哪些案例?

0 投票
2 回答
636 浏览

sml - ML : 匹配非穷举

我想让函数命名为headcol

所以我做了这样的功能:

但是当我调用它时,我会得到一个非穷尽的匹配。

0 投票
2 回答
169 浏览

list - 如何通过Haskell中的列表处理递归(转置操作)

虽然我知道 Haskell 中可能有转置或 ZipList 函数,但我正在尝试构建自己的转置函数,它将获取n个等长m的列表并将它们转置为m个长度为n的列表。

到目前为止,我的功能几乎可以使用以下代码:

merge list当我在 ghci 中运行 > 时,我得到以下输出:

我很确定这意味着我的head'函数中空列表的基本情况丢失了。该列表被转置,只是没有关闭。在这种情况下,我该如何处理这个问题?我有一个可能与它有关的暗示Maybe,但我无法以这种方式实现它。

0 投票
0 回答
79 浏览

haskell - 定义 foldr 变体时出现非详尽模式错误

我被要求制作一个类似foldr但具有非空列表的函数,它的工作方式如下foldr1 f [x1,x2...xn] = f x1 (f x2...(f xn-1 xn)...)

所以我这样定义它:

尽管涵盖了所有可能性,但我仍然收到“函数 foldr1 中的非详尽模式”错误。我究竟做错了什么?

0 投票
1 回答
207 浏览

haskell - Haskell 获得第一和第七

我需要在 Haskell 中编写一个函数,给定至少 7 个元素的列表,返回一个包含第一个和第七个元素的元组。

例如

我试过这个

但它说它有“非详尽的模式”,我不明白