git.iko.soy/semi-iso-optics
on master help sign in
Add SIMonadTrans.
commit68eee5e258571a7c953916272841c3defa1b0ac4 authorPaweł Nowak <pawel834@gmail.com> dateTue 25 Nov 2014, 22:39 (12 years ago) parenta7986cc
2 files changed+24
Control/SemiIso/Trans.hs+23 semi-iso.cabal+1
Control/SemiIso/Trans.hsnew file+23
@@ -0,0 +1,23 @@
1+{- |
2+Module : Control.SemiIso.Trans
3+Description : SemiIsoMonad transformers.
4+Copyright : (c) Paweł Nowak
5+License : MIT
6+
7+Maintainer : Paweł Nowak <pawel834@gmail.com>
8+Stability : experimental
9+
10+Monad transformers for the SemiIso hierarchy.
11+-}
12+module Control.SemiIso.Trans where
13+
14+import Data.SemiIsoFunctor
15+
16+-- | Monad transformer. Should satisfy laws:
17+--
18+-- prop> silift . sipure = sipure
19+--
20+-- prop> silift (m //= f) = silift m //= (silift . f)
21+class SIMonadTrans t where
22+ -- | Lifts a computation from the base monad.
23+ silift :: SemiIsoMonad m => m a -> t m a
semi-iso.cabal+1
@@ -22,6 +22,7 @@ source-repository head
2222library
2323 exposed-modules: Control.Lens.SemiIso
2424 Control.Lens.Internal.SemiIso
25+ Control.SemiIso.Trans
2526 Data.SemiIsoFunctor
2627 Data.Profunctor.Exposed
2728 build-depends: base >= 4 && < 5, profunctors, transformers, lens, tuple-morph