git.iko.soy/rowtype-yoga/purescript-native
on golang help sign in
Add Semigroupoid
b07cc2eGary Burgess
prelude/prelude.purs+9−5
@@ -15,16 +15,20 @@ module Prelude where
15 infixr 9 >>>
15 infixr 9 >>>
16 infixr 9 <<<
16 infixr 9 <<<
17
17
18− class Category a where
18+ class Semigroupoid a where
19− id :: forall t. a t t
20 (<<<) :: forall b c d. a c d -> a b c -> a b d
19 (<<<) :: forall b c d. a c d -> a b c -> a b d
21
20
21+ instance semigroupoidArr :: Semigroupoid (->) where
22+ (<<<) f g x = f (g x)
23+
22− (>>>) :: forall a b c d. (Category a) => a b c -> a c d -> a b d
24+ (>>>) :: forall a b c d. (Semigroupoid a) => a b c -> a c d -> a b d
23 (>>>) f g = g <<< f
25 (>>>) f g = g <<< f
24
26
27+ class (Semigroupoid a) <= Category a where
28+ id :: forall t. a t t
29+
25 instance categoryArr :: Category (->) where
30 instance categoryArr :: Category (->) where
26 id x = x
31 id x = x
27− (<<<) f g x = f (g x)
28
32
29 infixr 0 $
33 infixr 0 $
30 infixl 0 #
34 infixl 0 #
@@ -80,7 +84,7 @@ module Prelude where
80 (>>=) :: forall a b. m a -> (a -> m b) -> m b
84 (>>=) :: forall a b. m a -> (a -> m b) -> m b
81
85
82 class (Applicative m, Bind m) <= Monad m
86 class (Applicative m, Bind m) <= Monad m
83−
87+
84 return :: forall m a. (Monad m) => a -> m a
88 return :: forall m a. (Monad m) => a -> m a
85 return = pure
89 return = pure
86
90