Enunciado aqui module Exame where data Tree a = Empty | Node a (Tree a) (Tree a) type Extracto = [Movimento] type Movimento = (Descricao, Tipo, Data, Montante) type Descricao = String data Tipo = Credito | Debito deriving (Eq,Show) type Ano = Int type Mes = Int type Dia = Int data Data = D Ano Mes Dia deriving (Eq,Ord,Show) type Montante = Double -- valor positivo -- Dados para teste movimento1=("Compra", Debito, (D 1999 12 01), 123.0) movimento2=("EuroMilhoes", Credito, (D 2009 08 23), 155.5) movimento3=("EDP", Debito, (D 2009 01 26), 32.0) extracto = [movimento1,movimento2,movimento3] ------------------------------- --pg1 menoresMaiores :: Float -> Tree Float -> ([Float],[Float]) menoresMaiores n Empty = ([],[]) menoresMaiores n arv = let l = toList arv in ((filter (n>) l),(filter (n String -> Bool ePrefixo [] r = True ePrefixo l [] = True ePrefixo (x:xs) (y:ys) | (x==y)= True && e...