packages feed

joint 0.1.0 → 0.1.1

raw patch · 6 files changed

+60/−2 lines, 6 files

Files

+ 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