Hi,
I've tried a non-monadic version based on the suggestions here - https://github.com/ckkashyap/LearningPrograms/blob/master/Haskell/edsl/TreeWithoutMonad.hs
This implementation seems to lack the "indentation based" approach that the do syntax allows.

Would I be right if I said that the non-monadic version is "shallow embedding" and the monadic approach is deep embedding? Can we do deep embedding without using monads?

Regards,
Kashyap