1. 06 Mar, 2018 1 commit
  2. 25 Feb, 2018 1 commit
  3. 24 Feb, 2018 1 commit
  4. 11 Feb, 2018 1 commit
    • Michael Snoyman's avatar
      More general bracket docs (#62) · 0657cd13
      Michael Snoyman authored and Ryan Scott's avatar Ryan Scott committed
      * More consistent generalBracket implementations
      
      The behavior is identical to before, but since I'm about to use these
      instances in the docs, I wanted to raise less confusing questions to
      readers about implementation.
      
      * Docs explaining generalBracket implementation
      0657cd13
  5. 28 Jan, 2018 1 commit
    • Michael Snoyman's avatar
      Fix general bracket for ExceptT/ErrorT (#60) · 7ec3240e
      Michael Snoyman authored and Ryan Scott's avatar Ryan Scott committed
      * Demonstrate broken ExceptT instance for MonadMask
      
      * Simplify generalBracket so it works for ExceptT
      
      The previous type signature was in fact invalid, as it did not allow for
      a valid instance for ExceptT (et al). In particular, in the case of a
      non-exceptional Left result, neither the release nor cleanup functions
      could be used, since:
      
      * No result value was available for release
      * No SomeException value was available for cleanup
      
      It appears that this less pleasing version of generalBracket is the only
      one that works for all the types we care about.
      
      Furthermore: once we accept this, we are now forced to perform some
      discarding of updated state and Monoid written values in the StateT,
      WriterT, and RWST instances. This seems inherent to making things
      compatible with ExceptT.
      
      An alternative to this is to simply remove the ExceptT and ErrorT
      instances, but that's contrary to what many users want it seems.
      
      * Doc cleanups @RyanGIScott's review
      7ec3240e
  6. 16 Jan, 2018 1 commit
  7. 12 Jan, 2018 1 commit
  8. 11 Jan, 2018 2 commits
  9. 22 Nov, 2017 1 commit
  10. 29 Jun, 2017 2 commits
  11. 16 Jun, 2017 1 commit
    • Michael Snoyman's avatar
      Further generalization of generalBracket · af59d648
      Michael Snoyman authored
      I just realized that the function could be more general, and thereby
      more explicit in its intent, but allowing the non-exceptional release
      function to return a different type than the inner function.
      af59d648
  12. 15 Jun, 2017 1 commit
  13. 13 Jun, 2017 1 commit
  14. 12 Jun, 2017 1 commit
  15. 06 Jun, 2017 2 commits
  16. 11 Apr, 2017 1 commit
  17. 12 Dec, 2016 1 commit
  18. 30 Nov, 2016 1 commit
  19. 20 Jul, 2016 2 commits
    • Ryan Scott's avatar
      Add test for Either · 8092993e
      Ryan Scott authored
      8092993e
    • Michael Snoyman's avatar
      Add instances for MonadCatch and MonadMask for Either (#56) · d63e1de4
      Michael Snoyman authored and Ryan Scott's avatar Ryan Scott committed
      Came up in a discussion with @bitonic. There's no downside I can see to
      the MonadCatch instance. However, the MonadMask instance is a little bit
      more controversial, in that it's not actually doing any masking.
      However, it's impossible to know that it's not masking the async
      exceptions since there are no side-effects from the Either monad.
      
      Of course, by using unsafePerformIO, we could observe the difference,
      but I think that's a valid trade-off.
      
      One final argument against MonadMask for Either: it's probably not
      terribly useful.
      d63e1de4
  20. 17 Jul, 2016 2 commits
  21. 16 Jan, 2016 6 commits
  22. 15 Jan, 2016 4 commits
  23. 13 Jan, 2016 2 commits
  24. 23 Nov, 2015 1 commit
  25. 22 Nov, 2015 1 commit
  26. 23 Sep, 2015 1 commit