Skip to content

Commit f59a383

Browse files
bentongxyznatefaubionjamesdbrock
authored
feat: add MonadAsk & MonadReader instances (#208)
* feat: add MonadAsk & MonadReader instances * Update CHANGELOG.md * Update src/Parsing.purs Co-authored-by: Nathan Faubion <[email protected]> * Update src/Parsing.purs Co-authored-by: James Brock <[email protected]> * fix: remove unnecessary constraint Co-authored-by: Nathan Faubion <[email protected]> Co-authored-by: James Brock <[email protected]>
1 parent 413fb9e commit f59a383

File tree

2 files changed

+12
-0
lines changed

2 files changed

+12
-0
lines changed

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ Breaking changes:
1010

1111
New features:
1212

13+
- add `MonadAsk` and `MonadReader` instances (#208 by @bentongxyz)
14+
1315
Other improvements:
1416

1517
## [v10.0.0](https://github.com/purescript-contrib/purescript-parsing/releases/tag/v9.1.0) - 2022-07-18

src/Parsing.purs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ import Control.Alt (class Alt)
3333
import Control.Apply (lift2)
3434
import Control.Lazy (class Lazy)
3535
import Control.Monad.Error.Class (class MonadError, class MonadThrow, catchError, throwError)
36+
import Control.Monad.Reader.Class (class MonadAsk, class MonadReader, ask, local)
3637
import Control.Monad.Rec.Class (class MonadRec, Step(..), tailRecM)
3738
import Control.Monad.State.Class (class MonadState, state)
3839
import Control.Monad.Trans.Class (class MonadTrans, lift)
@@ -278,6 +279,15 @@ instance MonadRec (ParserT s m) where
278279
instance (MonadState t m) => MonadState t (ParserT s m) where
279280
state k = lift (state k)
280281

282+
instance (MonadAsk r m) => MonadAsk r (ParserT s m) where
283+
ask = lift ask
284+
285+
instance (MonadReader r m) => MonadReader r (ParserT s m) where
286+
local f (ParserT k) = ParserT
287+
( mkFn5 \state1 more lift throw done ->
288+
runFn5 k state1 more (lift <<< local f) throw done
289+
)
290+
281291
instance MonadThrow ParseError (ParserT s m) where
282292
throwError err = ParserT
283293
( mkFn5 \state1 _ _ throw _ ->

0 commit comments

Comments
 (0)