Run formatter

This commit is contained in:
Hans Hoeglund 2020-04-23 13:14:51 +01:00
parent 3160f1fcdd
commit d9c155d717

View File

@ -24,16 +24,16 @@ module Iso.Deriving
) )
where where
import Data.Kind
import Control.Applicative import Control.Applicative
import Control.Category import Control.Category
import Control.Monad.Reader import Control.Monad.Reader
import Control.Monad.Writer
import Control.Monad.State import Control.Monad.State
import Control.Monad.Writer
import Data.Bifunctor () import Data.Bifunctor ()
import Data.Functor.Classes (Eq1)
import Data.Kind
import Data.Profunctor (Profunctor (..)) import Data.Profunctor (Profunctor (..))
import Prelude hiding ((.), id) import Prelude hiding ((.), id)
import Data.Functor.Classes (Eq1)
type Iso s t a b = forall p f. (Profunctor p, Functor f) => p a (f b) -> p s (f t) type Iso s t a b = forall p f. (Profunctor p, Functor f) => p a (f b) -> p s (f t)
@ -81,7 +81,7 @@ class (Inject a b, Project a b) => Isomorphic a b where
instance (Project a b, Eq a) => Eq (As a b) where instance (Project a b, Eq a) => Eq (As a b) where
As a == As b = prj @a @b a == prj b As a == As b = prj @a @b a == prj b
{-# SPECIALIZE (==) :: As a b -> As a b -> As a b #-} {-# SPECIALIZE (==) :: As a b -> As a b -> As a b #-}
instance (Project a b, Ord a) => Ord (As a b) where instance (Project a b, Ord a) => Ord (As a b) where
compare (As a) (As b) = prj @a @b a `compare` prj b compare (As a) (As b) = prj @a @b a `compare` prj b
@ -146,20 +146,29 @@ instance (forall x. Isomorphic (f x) (g x), Monad f) => Monad (As1 f g) where
(>>=) :: forall a b. As1 f g a -> (a -> As1 f g b) -> As1 f g b (>>=) :: forall a b. As1 f g a -> (a -> As1 f g b) -> As1 f g b
As1 k >>= f = As1 $ inj @(f b) @(g b) $ (prj @(f a) @(g a) k) >>= prj . getAs1 . f As1 k >>= f = As1 $ inj @(f b) @(g b) $ (prj @(f a) @(g a) k) >>= prj . getAs1 . f
instance forall f g s . (forall x . Isomorphic (f x) (g x), MonadState s f) => instance
MonadState s (As1 f g) where forall f g s.
state :: forall a . (s -> (a, s)) -> As1 f g a (forall x. Isomorphic (f x) (g x), MonadState s f) =>
state k = As1 $ inj @(f a) @(g a) (state @s @f k) MonadState s (As1 f g)
where
state :: forall a. (s -> (a, s)) -> As1 f g a
state k = As1 $ inj @(f a) @(g a) (state @s @f k)
instance forall f g s . (forall x . Isomorphic (f x) (g x), MonadReader s f) => instance
MonadReader s (As1 f g) where forall f g s.
reader :: forall a . (s -> (a)) -> As1 f g a (forall x. Isomorphic (f x) (g x), MonadReader s f) =>
reader k = As1 $ inj @(f a) @(g a) (reader @s @f k) MonadReader s (As1 f g)
where
reader :: forall a. (s -> (a)) -> As1 f g a
reader k = As1 $ inj @(f a) @(g a) (reader @s @f k)
instance forall f g s . (forall x . Isomorphic (f x) (g x), MonadWriter s f) => instance
MonadWriter s (As1 f g) where forall f g s.
writer :: forall a . (a, s) -> As1 f g a (forall x. Isomorphic (f x) (g x), MonadWriter s f) =>
writer k = As1 $ inj @(f a) @(g a) (writer @s @f k) MonadWriter s (As1 f g)
where
writer :: forall a. (a, s) -> As1 f g a
writer k = As1 $ inj @(f a) @(g a) (writer @s @f k)
instance (forall x y. Isomorphic (f x y) (g x y), Category f) => Category (As2 f g) where instance (forall x y. Isomorphic (f x y) (g x y), Category f) => Category (As2 f g) where