File tree Expand file tree Collapse file tree 3 files changed +25
-5
lines changed Expand file tree Collapse file tree 3 files changed +25
-5
lines changed Original file line number Diff line number Diff line change 17
17
18
18
### Values
19
19
20
- many :: forall f a. (Alternative f) => f a -> f [a]
20
+ many :: forall f a. (Alternative f, Lazy1 f ) => f a -> f [a]
21
21
22
- some :: forall f a. (Alternative f) => f a -> f [a]
22
+ some :: forall f a. (Alternative f, Lazy1 f ) => f a -> f [a]
23
23
24
24
25
25
## Module Control.Apply
56
56
join :: forall a m. (Bind m) => m (m a) -> m a
57
57
58
58
59
+ ## Module Control.Lazy
60
+
61
+ ### Type Classes
62
+
63
+ class Lazy a where
64
+ defer :: (Unit -> a) -> a
65
+
66
+ class Lazy1 a where
67
+ defer1 :: forall t. (Unit -> a t) -> a t
68
+
69
+
59
70
## Module Control.Monad
60
71
61
72
### Values
Original file line number Diff line number Diff line change 1
1
module Control.Alternative where
2
2
3
3
import Control.Alt
4
+ import Control.Lazy
4
5
import Control.Plus
5
6
6
7
class (Applicative f , Plus f ) <= Alternative f
7
8
8
- some :: forall f a . (Alternative f ) => f a -> f [a ]
9
- some v = (:) <$> v <*> many v
9
+ some :: forall f a . (Alternative f , Lazy1 f ) => f a -> f [a ]
10
+ some v = (:) <$> v <*> defer1 (\_ -> many v)
10
11
11
- many :: forall f a . (Alternative f ) => f a -> f [a ]
12
+ many :: forall f a . (Alternative f , Lazy1 f ) => f a -> f [a ]
12
13
many v = some v <|> pure []
14
+
Original file line number Diff line number Diff line change
1
+ module Control.Lazy where
2
+
3
+ class Lazy a where
4
+ defer :: (Unit -> a ) -> a
5
+
6
+ class Lazy1 a where
7
+ defer1 :: forall t . (Unit -> a t ) -> a t
You can’t perform that action at this time.
0 commit comments