【发布时间】:2013-11-05 16:57:16
【问题描述】:
我知道标准方法是
(Eq z) => matchLists :: [x] -> [x] -> Bool
matchLists xs ys = xs == ys
但是我对从外部传递的元素有一个特殊的匹配函数,我无法控制它。
所以我要找的是
matchLists :: (x -> x -> Bool) -> [x] -> [x] -> Bool
(胡格尔说no)
您最终会得到一个带有这样签名的自定义函数吗?或者您会怎么做?
编辑:
zip 函数不能满足我的需要,因为结果列表在 2 个输入列表中具有最小长度
编辑:
你怎么看?
--matchListsWith :: (a -> a -> Bool) -> [a] -> [a] -> Bool
matchListsWith :: (a -> b -> Bool) -> [a] -> [b] -> Bool
matchListsWith _ [] [] = True
matchListsWith _ (_:_) [] = False
matchListsWith _ [] (_:_) = False
matchListsWith matcher (x:xs) (y:ys) = matcher x y && matchListsWith matcher xs ys
【问题讨论】:
-
matchListsWith没有理由不拥有更通用的类型(a -> b -> Bool) -> [a] -> [b] -> Bool。 -
@Cirdec,这很好
标签: haskell