Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Function haskell中的模式匹配输入_Function_Haskell_Pattern Matching - Fatal编程技术网

Function haskell中的模式匹配输入

Function haskell中的模式匹配输入,function,haskell,pattern-matching,Function,Haskell,Pattern Matching,我有这段代码 middleNumber:: Int -> Int -> Int -> Int middleNumber a b c | a == b && a == c = a | a == b || a == c = a | b == c = b | b < a

我有这段代码

middleNumber:: Int -> Int -> Int -> Int
middleNumber a b c 
         | a == b && a == c                  = a
         | a == b || a == c                  = a
         | b == c                            = b
         | b < a && a < c || c < a && a < b  = a 
         | a < b && b < c || c < b && b < a  = b
         | otherwise                         = c


但它们似乎不起作用。感谢您的帮助

模式
abc
已经匹配了您的函数可能接收到的任何可能的参数,因此您添加的任何模式都将是无法访问的代码。没有其他输入模式可供您捕捉。

不清楚哪种输入是“错误的”

然而,否则的保护总是计算为
True
,因此它将捕获所有或更多情况

如果确实存在输入错误的情况,则应更换
,否则
-guard为正确的情况。最后 您可以添加为最后一行,仅当没有保护计算为
True
时才会使用该行

middleNumber _ _ _ = error "Wrong input"
就是

middleNumber :: Int -> Int -> Int -> Int
middleNumber a b c 
         | a == b && a == c  = a
         | a == b || a == c  = a
         | b == c            = b
         | b < a && a < c || c < a && a < b  = a 
         | a < b && b < c || c < b && b < a  = b
         | ...conditions for c being the middle number... = c
middleNumber _ _ _ = error "Wrong input"
middleNumber::Int->Int->Int->Int
中间号码a b c
|a==b&&a==c=a
|a==b | | a==c=a
|b==c=b
|b

如果没有警卫计算为
True
则最后一行将捕获所有其他情况。

谢谢,这是有意义的。嗯,那么如果中间的数字是c呢?这还会返回c的值吗?
middleNumber _ _ _ = error "Wrong input"
middleNumber :: Int -> Int -> Int -> Int
middleNumber a b c 
         | a == b && a == c  = a
         | a == b || a == c  = a
         | b == c            = b
         | b < a && a < c || c < a && a < b  = a 
         | a < b && b < c || c < b && b < a  = b
         | ...conditions for c being the middle number... = c
middleNumber _ _ _ = error "Wrong input"