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"