Questão 44: partitionEithers
Voltar
Apresente uma definição recursiva da função pré-definida partitionEithers :: [Either a b] -> ([a],[b])
que divide uma lista de Either em duas listas.
Exemplo
> partitionEithers [Left 1, Right 2, Left 3, Right 4, Left 5]
([1,3,5],[2,4])
Resolução
partitionEithers :: [Either a b] -> ([a],[b])
partitionEithers [] = ([],[])
partitionEithers ((Left a):t) = (a : as,bs)
where (as,bs) = partitionEithers t
partitionEithers ((Right b):t) = (as,b : bs)
where (as,bs) = partitionEithers t