当前位置: 首页 > 知识库问答 >
问题:

函数无法识别模式匹配

佘修为
2023-03-14

我的函数paralellencheck每次我调用它抱怨非穷尽模式时都会抛出一个异常

并行检查的定义如下:

paralellenCheck :: (Eq a, Num a ) => [a] -> [a] -> Bool
paralellenCheck [] [] = True
paralellenCheck [_] [] = True
paralellenCheck [] [_] = True
paralellenCheck (x:xs) (y:ys)
  | intervall `elem`  [0,5,7,12]  = False
  | not $ paralellenCheck (x:xs) ys  = False 
  | not $ paralellenCheck xs (y:ys)  = False
  | otherwise  = True
  where intervall = abs (x - y)

在应用了-Wall的GHCI中运行函数只会返回

<interactive>:10:1:
Warning: Defaulting the following constraint(s) to type `Integer'
           (Eq a0)
             arising from a use of `paralellenCheck' at <interactive>:10:1-15
           (Num a0)
             arising from a use of `paralellenCheck' at <interactive>:10:1-15
In the expression: paralellenCheck [] [2, 3, 4, 5]
In an equation for `it': it = paralellenCheck [] [2, 3, 4, ....]

<interactive>:10:1:
Warning: Defaulting the following constraint(s) to type `Integer'
           (Eq a0)
             arising from a use of `paralellenCheck' at <interactive>:10:1-15
           (Num a0)
             arising from a use of `paralellenCheck' at <interactive>:10:1-15
In the expression: paralellenCheck [] [2, 3, 4, 5]
In an equation for `it': it = paralellenCheck [] [2, 3, 4, ....]
*** Exception: haskelltest.hs:(6,1)-(14,31): Non-exhaustive patterns in function paralellenCheck

我对哈斯克尔相当陌生,也相当困惑。我认为模式匹配与[_ ] [][][_]应该解决这个问题。

共有1个答案

李星波
2023-03-14

模式中的[]表示“恰好包含一个元素的任何列表”。你似乎想要“任何清单”。例如,现在,[](a:b:[])不匹配。对任何列表使用

 类似资料:
  • 我有一个小麻烦使用的日期。 我想我已经先用jquery声明了我的源代码,然后用datatable声明了我的源代码(我在他们的网站上检索包含最新版本的链接),但是当我加载网页时,我总是会收到相同的错误消息: 未捕获的语法错误:意外的标记{jQuery。延迟的异常:$(…)。DataTable不是函数类型错误:$(…)。DataTable不是一个函数 这显然是一个已知的问题,经过一些研究后我意识到了这

  • 以下是我的代码:< br > 一开始我只是重载了函数,发现有很多类似的代码。所以我正在考虑使用可变参数模板来获得更好的设计。(如果两个重载函数相似,如何做出更好的设计) 但是我不知道为什么会有错误:< br > main.cpp:27: 8:错误:没有匹配函数调用'getChar'ch=getChar(1, std::forward(str)...); 主要的cpp:37:2:注意:在函数模板专门

  • 我试图从我的jar启动另一个Java进程,我使用的是ProcessBuilder: 错误:无法创建Java虚拟机。错误:发生致命异常。程序将退出。无法识别的选项:-类路径“C:\absoulte\path\library.jar;C:\absoulte\path2\library2.jar;C:\absoulte\path3\library3.jar”

  • 我有一个用Java编写的SQL查询,如下所示: 是否可以发送值,将其转换为,并使其在雪花中工作?

  • 模式匹配与匿名函数 上一章总结了模式在 Scala 中的几种用法,最后提到了匿名函数。 这一章,我们具体的去学习如何在匿名函数中使用模式。 如果你参与过 Coursera 上的 那门 Scala 课程 , 或者写过 Scala 代码,那很可能你已经熟悉匿名函数。 比如说,将一组歌名转换成小写格式,你可能会定义一个匿名函数传递给 map 方法: val songTitles = List("The

  • 函数名称:全局模式匹配 函数功能:创建并返回一个迭代器,可用于 for 语句中迭代的进行全局查找 函数方法 str = string.match(s,pattern) 参数 类型 必填 说明 s string 是 原字符串 pattern string 是 待查找的字符串或模式匹配 返回值 类型 说明 str string/nil 格式化后的字符串,nil 为没找到 模式匹配用法 参数 说明 .