mirror of
https://github.com/hanshoglund/iso-deriving.git
synced 2024-09-19 02:47:54 +03:00
Run formatter
This commit is contained in:
parent
3160f1fcdd
commit
d9c155d717
@ -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
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user