From 5a30c609ecba607a9850e0a5beeb6fb59d663373 Mon Sep 17 00:00:00 2001 From: Benjamin Tong Date: Sat, 15 Oct 2022 13:57:01 +0000 Subject: [PATCH 1/5] feat: add MonadAsk & MonadReader instances --- src/Parsing.purs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/Parsing.purs b/src/Parsing.purs index f25609d..fe431d6 100644 --- a/src/Parsing.purs +++ b/src/Parsing.purs @@ -33,6 +33,7 @@ import Control.Alt (class Alt) import Control.Apply (lift2) import Control.Lazy (class Lazy) import Control.Monad.Error.Class (class MonadError, class MonadThrow, catchError, throwError) +import Control.Monad.Reader (class MonadAsk, class MonadReader, ask, local) import Control.Monad.Rec.Class (class MonadRec, Step(..), tailRecM) import Control.Monad.State.Class (class MonadState, state) import Control.Monad.Trans.Class (class MonadTrans, lift) @@ -278,6 +279,15 @@ instance MonadRec (ParserT s m) where instance (MonadState t m) => MonadState t (ParserT s m) where state k = lift (state k) +instance (MonadAsk r m) => MonadAsk r (ParserT s m) where + ask = lift ask + +instance (MonadRec m, MonadReader r m) => MonadReader r (ParserT s m) where + local f (ParserT k) = ParserT + ( mkFn5 \state1 more lift throw done -> + runFn5 k state1 more (lift <<< (local f)) throw done + ) + instance MonadThrow ParseError (ParserT s m) where throwError err = ParserT ( mkFn5 \state1 _ _ throw _ -> From f75c4e90a52909894a33a973b8268465611cb530 Mon Sep 17 00:00:00 2001 From: bentongxyz <60358804+bentongxyz@users.noreply.github.com> Date: Sun, 16 Oct 2022 00:00:56 +0800 Subject: [PATCH 2/5] Update CHANGELOG.md --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index f6a0943..c82852e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,8 @@ Breaking changes: New features: +- add `MonadAsk` and `MonadReader` instances (#208 by @bentongxyz) + Other improvements: ## [v10.0.0](https://github.com/purescript-contrib/purescript-parsing/releases/tag/v9.1.0) - 2022-07-18 From da028c3f67cfa14d06bf7fae2ca7e04af154049d Mon Sep 17 00:00:00 2001 From: bentongxyz <60358804+bentongxyz@users.noreply.github.com> Date: Tue, 18 Oct 2022 22:15:54 +0800 Subject: [PATCH 3/5] Update src/Parsing.purs Co-authored-by: Nathan Faubion --- src/Parsing.purs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Parsing.purs b/src/Parsing.purs index fe431d6..eee434e 100644 --- a/src/Parsing.purs +++ b/src/Parsing.purs @@ -285,7 +285,7 @@ instance (MonadAsk r m) => MonadAsk r (ParserT s m) where instance (MonadRec m, MonadReader r m) => MonadReader r (ParserT s m) where local f (ParserT k) = ParserT ( mkFn5 \state1 more lift throw done -> - runFn5 k state1 more (lift <<< (local f)) throw done + runFn5 k state1 more (lift <<< local f) throw done ) instance MonadThrow ParseError (ParserT s m) where From 3af7a3f1d9d58cf11ac7f9613f4b25b9b80d9a60 Mon Sep 17 00:00:00 2001 From: bentongxyz <60358804+bentongxyz@users.noreply.github.com> Date: Tue, 18 Oct 2022 22:16:02 +0800 Subject: [PATCH 4/5] Update src/Parsing.purs Co-authored-by: James Brock --- src/Parsing.purs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Parsing.purs b/src/Parsing.purs index eee434e..b1583a4 100644 --- a/src/Parsing.purs +++ b/src/Parsing.purs @@ -33,7 +33,7 @@ import Control.Alt (class Alt) import Control.Apply (lift2) import Control.Lazy (class Lazy) import Control.Monad.Error.Class (class MonadError, class MonadThrow, catchError, throwError) -import Control.Monad.Reader (class MonadAsk, class MonadReader, ask, local) +import Control.Monad.Reader.Class (class MonadAsk, class MonadReader, ask, local) import Control.Monad.Rec.Class (class MonadRec, Step(..), tailRecM) import Control.Monad.State.Class (class MonadState, state) import Control.Monad.Trans.Class (class MonadTrans, lift) From 34c2dc32a3a01ce454fcdcd149723339ab0ec4ce Mon Sep 17 00:00:00 2001 From: Benjamin Tong Date: Tue, 18 Oct 2022 14:17:28 +0000 Subject: [PATCH 5/5] fix: remove unnecessary constraint --- src/Parsing.purs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Parsing.purs b/src/Parsing.purs index b1583a4..ee6fb29 100644 --- a/src/Parsing.purs +++ b/src/Parsing.purs @@ -282,7 +282,7 @@ instance (MonadState t m) => MonadState t (ParserT s m) where instance (MonadAsk r m) => MonadAsk r (ParserT s m) where ask = lift ask -instance (MonadRec m, MonadReader r m) => MonadReader r (ParserT s m) where +instance (MonadReader r m) => MonadReader r (ParserT s m) where local f (ParserT k) = ParserT ( mkFn5 \state1 more lift throw done -> runFn5 k state1 more (lift <<< local f) throw done