Table of Content
模式匹配主要用来定义一些数据必须遵循的规则,根据他们来解析数据。
例如:
sevencheck :: Integer -> Bool
sevencheck 7 = True
sevencheck x = False
head' [x] = x
head' [] = "error"
head' (x:_) x
你也可以对数据进行引用,可以添加 引用名称@
:
firstletter :: String -> String
firstletter "" = "empty"
firstletter all@(x:_) = "first letter of " ++ all ++ " is " ++ [x]
where
首先要注意,在使用模式匹配时,where
只能被当前模式读取,而不能被其它模式所读取。
其次,在 where
中也可以使用模式匹配,例如:
firstLetterOfName :: String -> String -> String
firstLetterOfName firstname lastname = [f] ++ " " ++ [l]
where (f:_) = firstname
(l:_) = lastname
更进一步,你还可以定义函数:
calcarea :: [(Double, Double)] -> [Double]
calcarea l = [area w h | x > 0, y > 0]
where area w h = w * h