如果Map是空的,我正在编写一个函数,该函数根据参数中的Map.Map
具有不同的操作
这是我的代码:
import qualified Data.Map.Lazy as Map
testF :: (Ord a, Num a) => Map.Map a a -> [a] -> [a]
testF empty _ = [1024]
testF _ [] = []
testF m (x:xs) = [x] ++ (testF m xs)
main = do
let a = Map.fromList [(1,2), (3,4)]
print $ testF Map.empty [1,2,3] -- show [1024]
print $ testF a [1,2,3] -- show [1024] too
print $ a == Map.empty -- False
当然,GHC已经通知我,最新的功能是多余的。
Pattern match is redundant
In an equation for ‘testF’: testF m (x : xs) =
谢谢。
答案 0 :(得分:4)
您未与Map.empty
匹配,而是与empty
匹配,Map.empty
只是一个本地变量,与任何地图相关联。您不能与testF m _ | Map.null m = [1024]
匹配,因为它不是构造函数。
你能做的是:
m
即。使用警卫来检查a
是否为空。