Linguagem de Programação 2/1A Prova Final -- 29/07/96 1) (2.0) data Btree a = Tip a | Bin (Btree a) (Btree a) fliptree (Tip a) = Tip a fliptree (Bin a b) = Bin (fliptree b) (fliptree a) Prove por indução a seguinte propriedade: mapbtree f (fliptree xs) = fliptree (mapbtree f xs) 2) data Btree a = Tip a | Bin (Btree a) (Btree a) data LBtree a b = LTip a | LBin b (LBtree a b) (LBtree a b) (1.0) Defina uma função maxbtree que retorne o maior número em uma árvore do tipo Btree Int. (1.0) Defina uma função que transforme uma árvore do tipo Btree Int em uma árvore de tipo LBtree Int Int, onde a informação em cada nó é o maior número em suas respectivas sub-árvores. 3) (2.0) data Bexp = T | F | And Bexp Bexp | Or Bexp Bexp | Not Bexp Defina uma função eval que avalie uma expressão booleana do tipo Bexp acima. 4) data Gtree a = Node a [Gtree a] Dada uma árvore definida pelo tipo acima, com números em suas folhas: (1.0) faça uma função que retorne a mesma árvore, mas com os nós que contém apenas folhas substituidos pela soma das folhas. (1.0) defina uma função que retorne a soma de uma árvore. (1.0) defina uma função ziptree que dada duas árvores com o mesmo formato retorne uma árvore de pares (cada elemento do par obtido de uma das árvores). (1.0) Defina uma função fliptree que dada uma árvore retorna a árvore invertida como em um espelho.