File tree 5 files changed +50
-37
lines changed 5 files changed +50
-37
lines changed Original file line number Diff line number Diff line change 2
2
/externs /
3
3
/node_modules /
4
4
/bower_components /
5
+ /output /
Load Diff This file was deleted.
Original file line number Diff line number Diff line change
1
+ module Control.Apply where
2
+
3
+ infixl 4 <*
4
+ infixl 4 *>
5
+
6
+ (<*) :: forall a b f . (Apply f ) => f a -> f b -> f a
7
+ (<*) a b = const <$> a <*> b
8
+
9
+ (*>) :: forall a b f . (Apply f ) => f a -> f b -> f b
10
+ (*>) a b = const id <$> a <*> b
11
+
12
+ lift2 :: forall a b c f . (Apply f ) => (a -> b -> c ) -> f a -> f b -> f c
13
+ lift2 f a b = f <$> a <*> b
14
+
15
+ lift3 :: forall a b c d f . (Apply f ) => (a -> b -> c -> d ) -> f a -> f b -> f c -> f d
16
+ lift3 f a b c = f <$> a <*> b <*> c
17
+
18
+ lift4 :: forall a b c d e f . (Apply f ) => (a -> b -> c -> d -> e ) -> f a -> f b -> f c -> f d -> f e
19
+ lift4 f a b c d = f <$> a <*> b <*> c <*> d
20
+
21
+ lift5 :: forall a b c d e f g . (Apply f ) => (a -> b -> c -> d -> e -> g ) -> f a -> f b -> f c -> f d -> f e -> f g
22
+ lift5 f a b c d e = f <$> a <*> b <*> c <*> d <*> e
23
+
24
+ forever :: forall a b f . (Apply f ) => f a -> f b
25
+ forever a = a *> forever a
Original file line number Diff line number Diff line change
1
+ module Control.Bind where
2
+
3
+ infixr 1 =<<
4
+ infixr 1 >=>
5
+ infixr 1 <=<
6
+
7
+ (=<<) :: forall a b m . (Bind m ) => (a -> m b ) -> m a -> m b
8
+ (=<<) f m = m >>= f
9
+
10
+ (>=>) :: forall a b c m . (Bind m ) => (a -> m b ) -> (b -> m c ) -> a -> m c
11
+ (>=>) f g a = f a >>= g
12
+
13
+ (<=<) :: forall a b c m . (Bind m ) => (b -> m c ) -> (a -> m b ) -> a -> m c
14
+ (<=<) f g a = f =<< g a
15
+
16
+ join :: forall a m . (Bind m ) => m (m a ) -> m a
17
+ join m = m >>= id
18
+
19
+ ifM :: forall a m . (Bind m ) => m Boolean -> m a -> m a -> m a
20
+ ifM cond t f = cond >>= \cond' -> if cond' then t else f
Original file line number Diff line number Diff line change 1
1
module Control.Monad where
2
2
3
- import Prelude
4
- import Data.Array
5
-
6
3
replicateM :: forall m a . (Monad m ) => Number -> m a -> m [a ]
7
4
replicateM 0 _ = return []
8
5
replicateM n m = do
9
6
a <- m
10
7
as <- replicateM (n - 1 ) m
11
8
return (a : as)
12
9
13
- infixr 1 >=>
14
- infixr 1 <=<
15
-
16
- (>=>) :: forall m a b c . (Monad m ) => (a -> m b ) -> (b -> m c ) -> a -> m c
17
- (>=>) f g a = do
18
- b <- f a
19
- g b
20
-
21
- (<=<) :: forall m a b c . (Monad m ) => (b -> m c ) -> (a -> m b ) -> a -> m c
22
- (<=<) = flip (>=>)
23
-
24
- join :: forall m a . (Monad m ) => m (m a ) -> m a
25
- join mm = do
26
- m <- mm
27
- m
28
-
29
10
foldM :: forall m a b . (Monad m ) => (a -> b -> m a ) -> a -> [b ] -> m a
30
11
foldM _ a [] = return a
31
12
foldM f a (b:bs) = f a b >>= \a' -> foldM f a' bs
32
13
33
14
when :: forall m . (Monad m ) => Boolean -> m { } -> m { }
34
15
when true m = m
35
16
when false _ = return {}
17
+
18
+ unless :: forall m . (Monad m ) => Boolean -> m { } -> m { }
19
+ unless false m = m
20
+ unless true _ = return {}
You can’t perform that action at this time.
0 commit comments