- Added `with_effect` decorator to all monadic types that mimics `do` notation from haskell / `for` comprehensions in Scala - `IO` is now stack-safe - Added `tail_rec` helper function to `Maybe`, `Either` and `Writer` to help write recursive monadic functions (necessary for implementing `with_effect`)