У меня есть эта функция:
subsetsOfThree [] = []
subsetsOfThree [x,y,z] = [[x,y,z]]
subsetsOfThree fls@(x:y:z:xs) = ([x,y,z] : subsetsOfThree (xs)) ++
(subsetsOfThree (x:xs)) ++
(subsetsOfThree (y:xs)) ++
(subsetsOfThree (z:xs)) ++
(subsetsOfThree (x:y:xs)) ++
(subsetsOfThree (x:z:xs)) ++
(subsetsOfThree (y:z:xs))
subsetsOfThree _ = []
И для этого нужны только подмножества длины 3, но я не могу избавиться от преобразования в эквивалентное понимание списка, я попытался:
subsetsOfThree [] = []
subsetsOfThree [x,y,z] = [[x,y,z]]
subsetsOfThree (x:y:z:xs) = [xs6 | xs1 <- subsetsOfThree xs,
xs2 <- [xs1, (x:xs)],
xs3 <- [xs2, (y:xs)],
xs4 <- [xs3, (z:xs)],
xs5 <- [xs4, (x:y:xs)],
xs6 <- [xs5, (y:z:xs)]
]
subsetsOfThree _ = []
Но всегда возвращается []
Любая подсказка будет оценена