リストを受け取り、それを分割するすべての異なる可能性のペアのリストを返す、split という名前の関数を作成しようとしています。
split [4,3,6] = [([],[4,3,6]),([4],[3,6]),([4,3],[6]),([4,3,6],[])]
今、私はこれを書きました
split :: [a] -> [([a],[a])]
split [] = [([],[])]
split (x:xs) = ([],(x:xs)):(zip (map (x:) (map fst split(xs))) (map snd split(xs)))
コードと Hugs の断片と、選択したインタープリターがこれを取得します
ERROR file:.\split.hs:3 - Type error in application
*** Expression : map snd split xs
*** Term : map
*** Type : (e -> f) -> [e] -> [f]
*** Does not match : a -> b -> c -> d
エラーメッセージ。私は一体何を間違っているのですか?(map snd split xs) が
(a-> b -> c -> d) のタイプになるのはなぜですか?