data Tree t = Empty | Node t (Tree t) (Tree t)
Siamo in grado di creare l'istanza Functor e utilizzareFunctional albero e pieghevole ma con nodi. C'è qualche generalizzazione su di esso?
fmap :: (t -> a) -> Tree t -> Tree a
Ma cosa succede se, invece di (t -> a) che voglio (Albero t -> a) in modo da poter avere accesso a un intero (Nodo t) non solo t
treeMap :: (Tree t -> a) -> Tree t -> Tree a
treeMap f Empty = Empty
treeMap f [email protected](Node _ l r) = Node (f n) (treeMap f l) (treeMap f r)
Stessa cosa con piega
treeFold :: (Tree t -> a -> a) -> a -> Tree t -> a
c'è qualche generalizzazione oltre func cose come queste?
map :: (f t -> a) -> f t -> f a
fold :: (f t -> a -> a) -> a -> f t -> a