私は標準的な方法が
(Eq z) => matchLists :: [x] -> [x] -> Bool
matchLists xs ys = xs == ys
しかし、外部から渡される要素の特別なマッチング関数があり、それを制御することはできません。
だから私が探しているのは
matchLists :: (x -> x -> Bool) -> [x] -> [x] -> Bool
(フーグルはノーと言います)
このようなシグネチャを持つカスタム関数を作成しますか?それとも代わりに何をしますか?
編集:
結果のリストは2つの入力リストのうち最小の長さであるため、zip関数は必要なことを行いません
編集:
これについてどう思いますか?
--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