s-cargot-0.1.6.0: A flexible, extensible s-expression library.

Safe Haskell | Safe-Inferred
Language | Haskell2010

Data.SCargot.Atom

Synopsis

- atom :: (t -> atom) -> Parser t -> Parser atom
- mkAtomParser :: [Parser atom] -> SExprParser atom (SExpr atom)

# Documentation

This module defines small convenience functions for building an atom type from several individual parsers. This is easy to do without these functions, but these functions communicate intent more directly:

    data Atom
      = Ident Text
      | Num Integer

    myParser :: SExprParser Atom (SExpr Atom)
    myParser = mkAtomParser
      [ atom Ident parseR7RSIdent
      , atom Num   signedDecNumber
      ]

atom :: (t -> atom) -> Parser t -> Parser atom Source #

A convenience function for defining an atom parser from a wrapper function and a parser. This is identical to `fmap` specialized to operate over `Parser` values, and is provided as sugar.

mkAtomParser :: [Parser atom] -> SExprParser atom (SExpr atom) Source #

A convenience function for defining a `SExprSpec` from a list of possible atom parsers, which will be tried in sequence before failing.