Я пытаюсь написать функцию с именем split, которая принимает список и возвращает список пар всех разных возможностей для его разбивки, например.Haskell: Как вернуть список возможных разбиений списка
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)?
Is ([4,6], [3]) также в результате? Потому что это соответствует вашему описанию. И если он там, ответа Николаса Ву недостаточно. – kaan
Нет, это не результат, и я сожалею, если мое описание подсказывает это. – lototy