homepage: https://github.com/SamuelSchlesinger/mtl-uplift
changelog-type: ''
hash: aa45a633f045a865d62cd82965de7fe487928d37882fbf86d7f4ce98335f33b2
test-bench-deps:
  mtl-uplift: -any
  base: '>=4.12 && <4.15'
  mtl: '>=2.0'
maintainer: sgschlesinger@gmail.com
synopsis: Lift substacks of monad transformer stacks
changelog: ''
basic-deps:
  base: '>=4.12 && <4.15'
  mtl: '>=2.2'
all-versions:
- 0.1.0.0
author: Samuel Schlesinger
latest: 0.1.0.0
description-type: markdown
description: |
  # mtl-uplift

  Uplift entire substacks of monad transformer stacks, boilerplate free!

  Many industry Haskell programmers are all too familiar with code like:
  ```haskell
  lift . lift . lift . lift . lift . lift . lift . lift . lift . lift . lift . lift . lift $ do
    blah
  ```
  This may or may not be an exaggeration. Now, we can just write the much less
  visually annoying:
  ```haskell
  uplift @TopOfSubstackT $ do
    blah
  ```
  This relieves the programmer from having to do any bookkeeping about what
  level of their greater stack their substack lives at, but just to know which monad tops it.
  Beyond that, if we transform our stack, with the old code we would potentially have to modify the number of
  calls to `lift`, but now, as long as we still want to `uplift` a substack with
  the same top, we don't have to. Isn't that uplifting?
license-name: MIT

Update from Hackage at 2020-09-27T20:15:53Z
Update from Hackage at 2020-09-27T20:15:53Z
