joint 0.1.0 → 0.1.1
raw patch · 6 files changed
+60/−2 lines, 6 files
Files
- Control/Joint/Base/Either.hs +14/−0
- Control/Joint/Base/Maybe.hs +14/−0
- Control/Joint/Base/Reader.hs +16/−0
- Control/Joint/Schemes/UT.hs +10/−0
- Control/Joint/Transformer.hs +1/−1
- joint.cabal +5/−1
+ Control/Joint/Base/Either.hs view
@@ -0,0 +1,14 @@+module Control.Joint.Base.Either where++import Control.Joint.Composition (Composition (Primary, unwrap))+import Control.Joint.Transformer (Transformer (Schema, lay, wrap))+import Control.Joint.Schemes.UT (UT (UT))++instance Composition (Either e) where+ type Primary (Either e) a = Either e a+ unwrap x = x++instance Transformer (Either e) where+ type Schema (Either e) u = UT (Either e) u+ lay x = UT $ Right <$> x+ wrap x = UT . pure $ x
+ Control/Joint/Base/Maybe.hs view
@@ -0,0 +1,14 @@+module Control.Joint.Base.Maybe where++import Control.Joint.Composition (Composition (Primary, unwrap))+import Control.Joint.Transformer (Transformer (Schema, lay, wrap))+import Control.Joint.Schemes.UT (UT (UT))++instance Composition Maybe where+ type Primary Maybe a = Maybe a+ unwrap x = x++instance Transformer Maybe where+ type Schema Maybe u = UT Maybe u+ lay x = UT $ Just <$> x+ wrap x = UT . pure $ x
+ Control/Joint/Base/Reader.hs view
@@ -0,0 +1,16 @@+module Control.Joint.Base.Reader where++import Control.Joint.Composition (Composition (Primary, unwrap))+import Control.Joint.Transformer (Transformer (Schema, lay, wrap))+import Control.Joint.Schemes.TU (TU (TU))++newtype Reader r a = Reader (r -> a)++instance Composition (Reader e) where+ type Primary (Reader e) a = (->) e a+ unwrap (Reader x) = x++instance Transformer (Reader r) where+ type Schema (Reader r) u = TU ((->) r) u+ lay x = TU . const $ x+ wrap x = TU $ pure <$> unwrap x
+ Control/Joint/Schemes/UT.hs view
@@ -0,0 +1,10 @@+module Control.Joint.Schemes.UT (UT (..)) where++import Control.Joint.Core (type (:.), type (:=))+import Control.Joint.Composition (Composition (Primary, unwrap))++newtype UT t u a = UT (u :. t := a)++instance Composition (UT t u) where+ type Primary (UT t u) a = u :. t := a+ unwrap (UT x) = x
Control/Joint/Transformer.hs view
@@ -1,4 +1,4 @@-module Control.Joint.Transformer (Transformer (..)) where+module Control.Joint.Transformer (Transformer (..), type (:>)) where import Control.Joint.Core (type (~>)) import Control.Joint.Composition (Composition)
joint.cabal view
@@ -1,5 +1,5 @@ name: joint-version: 0.1.0+version: 0.1.1 synopsis: Trying to compose non-composable homepage: https://github.com/iokasimov/joint license: BSD3@@ -22,7 +22,11 @@ Control.Joint.Transformer Control.Joint.Schemes Control.Joint.Schemes.TU+ Control.Joint.Schemes.UT Control.Joint.Schemes.UTU+ Control.Joint.Base.Maybe+ Control.Joint.Base.Either+ Control.Joint.Base.Reader build-depends: base == 4.* default-language: Haskell2010 ghc-options: -fno-warn-tabs