Feu que els arbres genèrics siguins instàncies de la classe Show i s’escriguin a través del recorregut en inordre dels seus elements, seguint el format dels exemples.
Feu que els boscos d’arbres siguin instància de la classe Functor i implementeu una funció doubleF :: Num a => Forest a -> Forest a que dobli els valors dels nodes dels arbres d’un bosc, tot utilitzant el functor de boscos.
Observació
A l’hora de corregir es tindrà en compte la correcció, senzillesa, elegància i eficiència de la solució proposada.
Input
Empty :: Tree Int Node 1 Empty Empty (Node 1 (Node 2 Empty Empty) Empty) (Node 2 Empty (Node 1 Empty Empty)) (Node 1 (Node 2 Empty Empty) (Node 3 Empty Empty)) (Node 1 (Node 2 Empty (Node 3 Empty Empty)) (Node 4 Empty Empty))
Output
() ((),1,()) (((),2,()),1,()) ((),2,((),1,())) (((),2,()),1,((),3,())) (((),2,((),3,())),1,((),4,()))
Input
doubleT $ Empty :: Tree Int doubleT $ Node 1 Empty Empty doubleT $ Node 1 (Node 2 Empty Empty) Empty doubleT $ Node 2 Empty (Node 1 Empty Empty) doubleT $ Node 1 (Node 2 Empty Empty) (Node 3 Empty Empty) doubleT $ Node 1 (Node 2 Empty (Node 3 Empty Empty)) (Node 4 Empty Empty)
Output
() ((),2,()) (((),4,()),2,()) ((),4,((),2,())) (((),4,()),2,((),6,())) (((),4,((),6,())),2,((),8,()))
Input
doubleF $ Forest [] doubleF $ Forest [Empty, Node 1 Empty Empty, Node 1 (Node 2 Empty Empty) (Node 3 Empty Empty)]
Output
Forest [] Forest [(),((),2,()),(((),4,()),2,((),6,()))]