问题标签 [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.
haskell - Haskell 中函数的非穷举模式
我有一个 Evol 类,并希望将 distanceMatrix 的实例应用于我的 MolSeq 类型的列表。函数 molseqDistMat 可以按需要工作,但我无法理解尝试运行 distanceMatrix [Molseq] 时遇到的错误。我了解错误的含义,但找不到异常。这是错误。
这是代码。
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 Int
s 或任何特殊的东西——该函数需要两个 valid Ints
,所以我只需要处理整数——而且我认为没有任何数字不能被视为大于、小于或等于另一个?
这只是 GHC 假设我没有涵盖所有情况,因为我没有添加最后的otherwise =
后卫吗?即使它在逻辑上涵盖了所有情况。
另外,如果您对如何编写更惯用的 Haskell 有任何提示,我将不胜感激。我还在学习基础知识。
haskell - 非穷举模式,Haskell
我正在尝试编写函数 tails,它通过以下方式将字符串转换为字符串列表:
这是我的实现:
正如标题所暗示的,这个函数中存在非详尽的模式。不幸的是,我不明白这是怎么回事。
我是 Haskell 的新手......任何帮助将不胜感激!
pattern-matching - 致命错误:异常 Match_failure("main.ml", 8, 15)
这是我的代码:
然后它告诉我:
我不明白这是什么意思,它似乎并没有表明我的错误来自哪里。
此外,我收到以下警告:
我怎样才能摆脱这个警告?
我的意思是,在我看来,说我错过了这个案例并不意味着什么N(_,_,_)
,但是这个案例总是被处理的,那么为什么编译器告诉我这个案例不匹配呢?
haskell - 使用“否则”时如何获得“非详尽模式”异常
我试图证明表格的数字p_1 * ... * p_k + 1
并不都是素数,为此,我编写了这段代码
我得到这个例外:
*** 例外:Ch3.hs:(11,2)-(13,31):功能标记中的非详尽模式
但是,在函数的定义中mark
,我使用otherwise
了 ,所以怎么可能存在函数的定义没有为此指定任何规则的情况。我的意思是我认为使用关键字otherwise
可以确保没有未用尽的模式。
haskell - Haskell中的函数异常中的非详尽模式
我有这个代码:
输入: foo "4a5b"
输出: "aaaabbbbb"
此行if (digitToInt(x)) == 0
检查数字是否为 0,如果是,则它将与字符串的其余部分一起扩展:
例子:
输入: foo "00004a5b"
输出: "aaaabbbbb"
我添加 else if (digitToInt(x)) /= 0
以检查其他情况。
但是它给了我:
错误。我在这里错过了哪些案例?
sml - ML : 匹配非穷举
我想让函数命名为headcol
:
所以我做了这样的功能:
但是当我调用它时,我会得到一个非穷尽的匹配。
list - 如何通过Haskell中的列表处理递归(转置操作)
虽然我知道 Haskell 中可能有转置或 ZipList 函数,但我正在尝试构建自己的转置函数,它将获取n个等长m的列表并将它们转置为m个长度为n的列表。
到目前为止,我的功能几乎可以使用以下代码:
merge list
当我在 ghci 中运行 > 时,我得到以下输出:
我很确定这意味着我的head'
函数中空列表的基本情况丢失了。该列表被转置,只是没有关闭。在这种情况下,我该如何处理这个问题?我有一个可能与它有关的暗示Maybe
,但我无法以这种方式实现它。
haskell - 定义 foldr 变体时出现非详尽模式错误
我被要求制作一个类似foldr
但具有非空列表的函数,它的工作方式如下foldr1 f [x1,x2...xn] = f x1 (f x2...(f xn-1 xn)...)
:
所以我这样定义它:
尽管涵盖了所有可能性,但我仍然收到“函数 foldr1 中的非详尽模式”错误。我究竟做错了什么?
haskell - Haskell 获得第一和第七
我需要在 Haskell 中编写一个函数,给定至少 7 个元素的列表,返回一个包含第一个和第七个元素的元组。
例如
我试过这个
但它说它有“非详尽的模式”,我不明白