Duvida na recursão da atividade União

o exercicio é:

uniao: recebe duas listas que não contenham elementos repetidos e retorna uma nova com todos os elementos das duas listas originais (sem repetição) 

ex.: 
(uniao '(3 6 5 7) '(2 9 7 5 1))    ==>    (3 6 5 7 2 9 1)

_________________________________________________________

alguem me da um help ae o/
esse exercicio ta me dando nó, na funcao compara, na primeira guarda, o retorno ta errado e nao consigo solucionar

compara :: [Int] -> [Int] -> [Int]
compara _ [] = []
compara [] _ = []
compara (a:x) (b:y)
|a == b = compara (compara x (b:y))(compara (a:x) y)
|otherwise = b : compara (a:x) y

uniao :: [Int] -> [Int] -> [Int]
uniao a [] = a
uniao [] a = a
uniao x y = x ++ compara x y

parece que quando a lista é crescente por exemplo [1,2][1,2,3,4] a resposta sai [1,2,2,3,4] e decrescente [1,2][4,3,2,1] fica [1,2,4,3,2]

ja me deu tilt

#recursividade
#União
#Haskell
#recursao
#compara
Disciplina:Programação Funcional1.519 materiais

1 resposta(s)

Carregar mais