Skip to content

Commit 2cdfbd0

Browse files
committed
Update for fix in Control.Lazy
1 parent 5205e02 commit 2cdfbd0

File tree

4 files changed

+8
-13
lines changed

4 files changed

+8
-13
lines changed

docs/Module.md

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@
3131

3232
instance lazy1ParserT :: Lazy1 (ParserT s m)
3333

34+
instance lazyParserT :: Lazy (ParserT s m a)
35+
3436
instance monadParserT :: (Monad m) => Monad (ParserT s m)
3537

3638
instance monadPlusParserT :: (Monad m) => MonadPlus (ParserT s m)
@@ -81,10 +83,6 @@
8183

8284
endBy1 :: forall m s a sep. (Monad m) => ParserT s m a -> ParserT s m sep -> ParserT s m [a]
8385

84-
fix :: forall m s a. (ParserT m s a -> ParserT m s a) -> ParserT m s a
85-
86-
fix2 :: forall m s a b. (Tuple (ParserT m s a) (ParserT m s b) -> Tuple (ParserT m s a) (ParserT m s b)) -> Tuple (ParserT m s a) (ParserT m s b)
87-
8886
option :: forall m s a. (Monad m) => a -> ParserT s m a -> ParserT s m a
8987

9088
optionMaybe :: forall m s a. (Functor m, Monad m) => ParserT s m a -> ParserT s m (Maybe a)

examples/Test.purs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import Control.Alt
88
import Control.Alternative
99
import Control.Monad.Eff
1010
import Control.Monad.Identity
11+
import Control.Lazy
1112

1213
import Debug.Trace
1314

@@ -20,7 +21,7 @@ parens :: forall m a. (Monad m) => ParserT String m a -> ParserT String m a
2021
parens = between (string "(") (string ")")
2122

2223
nested :: forall m. (Functor m, Monad m) => ParserT String m Number
23-
nested = fix $ \p -> (do
24+
nested = fix1 $ \p -> (do
2425
string "a"
2526
return 0) <|> ((+) 1) <$> parens p
2627

src/Text/Parsing/Parser.purs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,9 @@ instance monadStateParserT :: (Monad m) => MonadState s (ParserT s m) where
8484
return $ case f s of
8585
Tuple a s' -> { input: s', consumed: false, result: Right a }
8686

87+
instance lazyParserT :: Lazy (ParserT s m a) where
88+
defer f = ParserT $ \s -> unParserT (f unit) s
89+
8790
instance lazy1ParserT :: Lazy1 (ParserT s m) where
8891
defer1 f = ParserT $ \s -> unParserT (f unit) s
8992

src/Text/Parsing/Parser/Combinators.purs

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import Data.Either
77

88
import Control.Alt
99
import Control.Alternative
10+
import Control.Lazy
1011
import Control.Monad
1112
import Control.Monad.Error.Trans
1213
import Control.Monad.Error.Class
@@ -15,14 +16,6 @@ import Control.Monad.State.Class
1516

1617
import Text.Parsing.Parser
1718

18-
fix :: forall m s a. (ParserT m s a -> ParserT m s a) -> ParserT m s a
19-
fix f = ParserT $ \s -> unParserT (f (fix f)) s
20-
21-
fix2 :: forall m s a b. (Tuple (ParserT m s a) (ParserT m s b) -> Tuple (ParserT m s a) (ParserT m s b)) -> Tuple (ParserT m s a) (ParserT m s b)
22-
fix2 f = Tuple
23-
(ParserT $ \s -> unParserT (fst (f (fix2 f))) s)
24-
(ParserT $ \s -> unParserT (snd (f (fix2 f))) s)
25-
2619
(<?>) :: forall m s a. (Monad m) => ParserT s m a -> String -> ParserT s m a
2720
(<?>) p msg = p <|> fail ("Expected " ++ msg)
2821

0 commit comments

Comments
 (0)