Portability | non-portable (GNTD, DeriveFunctor, OverloadedStrings) |
---|---|
Stability | experimental |
Maintainer | hans@hanshoglund.se |
Safe Haskell | None |
Lightweight parsing library based on partial functions.
- data SparseT a b
- type Sparse = SparseT String
- asSparse :: Sparse a -> Sparse a
- runSparseT :: SparseT a b -> a -> Maybe b
- runSparseT' :: SparseT a b -> a -> Maybe (a, b)
- runSparse :: Sparse a -> String -> Maybe a
- runSparse' :: Sparse a -> String -> Maybe (String, a)
- headP :: (b -> Bool) -> SparseT [b] b
- splitP :: ([a] -> Int) -> SparseT [a] [a]
- char :: Char -> Sparse Char
- charIs :: (Char -> Bool) -> Sparse Char
- string :: String -> Sparse String
- stringIs :: Int -> (String -> Bool) -> Sparse String
- optionally :: (Monad f, Alternative f) => a -> f a -> f a
- optionallyMaybe :: (Monad f, Alternative f) => f a -> f (Maybe a)
- optional :: (Monad f, Alternative f) => f a -> f ()
- between :: Monad m => m a -> m a1 -> m b -> m b
- skipMany1 :: (Monad m, Alternative m) => m a -> m ()
- skipMany :: (Monad f, Alternative f) => f a -> f ()
- many1 :: (Monad m, Alternative m) => m a -> m [a]
- sepBy :: (Monad f, Alternative f) => f a1 -> f a -> f [a1]
- sepBy1 :: (Monad m, Alternative m) => m a1 -> m a -> m [a1]
- sepEndBy1 :: (Monad m, Alternative m) => m a1 -> m a -> m [a1]
- sepEndBy :: (Monad m, Alternative m) => m a1 -> m a -> m [a1]
- endBy1 :: (Monad m, Alternative m) => m a -> m a1 -> m [a]
- endBy :: (Monad f, Alternative f) => f a -> f a1 -> f [a]
- count :: Monad m => Int -> m a -> m [a]
Sparse
Running
runSparseT :: SparseT a b -> a -> Maybe bSource
runSparseT' :: SparseT a b -> a -> Maybe (a, b)Source
Primitives
headP :: (b -> Bool) -> SparseT [b] bSource
Consumes one input element.
Fails if the predicate fails, or if there is no more input.
splitP :: ([a] -> Int) -> SparseT [a] [a]Source
Consume one or more input elements.
The given function receives the entire remaining input, and must return the number of consumed elements.
Fails if the predicate return 0 or less, or if there is no more input.
Basic parsers
Combinators
optionally :: (Monad f, Alternative f) => a -> f a -> f aSource
optionallyMaybe :: (Monad f, Alternative f) => f a -> f (Maybe a)Source
optional :: (Monad f, Alternative f) => f a -> f ()Source
skipMany1 :: (Monad m, Alternative m) => m a -> m ()Source
skipMany :: (Monad f, Alternative f) => f a -> f ()Source
many1 :: (Monad m, Alternative m) => m a -> m [a]Source
sepBy :: (Monad f, Alternative f) => f a1 -> f a -> f [a1]Source
sepBy1 :: (Monad m, Alternative m) => m a1 -> m a -> m [a1]Source
sepEndBy1 :: (Monad m, Alternative m) => m a1 -> m a -> m [a1]Source
sepEndBy :: (Monad m, Alternative m) => m a1 -> m a -> m [a1]Source
endBy1 :: (Monad m, Alternative m) => m a -> m a1 -> m [a]Source
endBy :: (Monad f, Alternative f) => f a -> f a1 -> f [a]Source