Haskell - profundidade para cada nó na árvore binária usando a mônada do Reader
Eu escrevi o seguinte código. Está trabalhando e usando oReader
mônada.
Você poderia me dar algumas dicas sobre o estilo de código em Haskell? Principalmente, quero dizer mônadas - sou 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