-
Notifications
You must be signed in to change notification settings - Fork 50
Closed
Description
We should have the super-useful match combinator.
To write this combinator for Text.Parsing.Parser.String, I think we will need some more members of StringLike.
purescript-parsing/src/Text/Parsing/Parser/String.purs
Lines 21 to 25 in e801a0e
| class StringLike s where | |
| drop :: Int -> s -> s | |
| indexOf :: Pattern -> s -> Maybe Int | |
| null :: s -> Boolean | |
| uncons :: s -> Maybe { head :: Char, tail :: s } |
Maybe if we have
length :: s -> Int
length = Data.String.length
take :: Int -> s -> s
take = Data.String.takeThen we can write
match :: forall m s a. ParserT s m a -> ParserT s m (Tuple a s)
match p = do
ParseState input1 _ _ <- get
x <- p
ParseState input2 _ _ <- get
pure $ Tuple x $ take (length input1 - length input2) input1Metadata
Metadata
Assignees
Labels
No labels