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
 李二狗 — @Meniny
                李二狗 — @Meniny
             
            
             
                 
                