data BT a = Leaf a | Node a (BT a) (BT a)

La funzione calcola l'applicazione di f alla radice dell'albero
dato come secondo input ed al risultato della chiamata
di f ricorsivamente sui due sottoalberi.

>> :type treeapply
treeapply :: (a -> a -> a -> a) -> BT a -> a

treeapply prende (in modo currificato, ovviamente) due argomenti.
Il primo deve essere necessariamente una funzione di 3 argomenti per come f e' usata
nel corpo di 
treeapply  f (Node n t1 t2) = (f n (treeapply f t1) (treeapply f t2)).
Il codominio del primo argomento e' necessariamente il tipo delle etichette degli alberi,
poiche' il risultato di (f n (treeapply f t1) (treeapply f t2)) deve avere
lo stesso tipo della x utilizzata in treeapply f (Leaf x) = x.
Il tipo dell'argomento f e' ovviamente il tipo delle etichette,
mentre il tipo del secondo e terzo argomento e' il tipo del codominio di treeapply
che, da treeapply f (Leaf x) = x, si deduce essere il tipo delle etichette
degli alberi.
Da qui il risultato di >> :type treeapply



