Haskell: profundidad para cada nodo en árbol binario usando Reader monad
Escribí el siguiente código. Está trabajando y usando elReader
monada.
¿Podría darme algunas pistas sobre el estilo de código en Haskell? Principalmente, me refiero a mónadas, soy novato.
import Control.Monad.Reader
data Tree a = Node a (Tree a) (Tree a)
| Empty
renumberM :: Tree a -> Reader Int (Tree Int)
renumberM (Node _ l r) = ask >>= (\x ->
return (Node x (runReader (local (+1) (renumberM l)) x)
(runReader (local (+1) (renumberM r)) x)))
renumberM Empty = return Empty
renumber'' :: Tree a -> Tree Int
renumber'' t = runReader (renumberM t) 0