sexp: S-Expression parsing/printing made fun and easy

[ gpl, language, library, parsing, program ] [ Propose Tags ]

See the file and the homepage for details.

[Skip to Readme]
Versions 0.5, 0.6, 0.7
Dependencies attoparsec, base (==4.*), bytestring, cmdargs, mtl, syb [details]
License GPL-3.0-only
Author Alexandru Scvortov <>
Category Language, Parsing
Home page
Source repo head: git clone
Uploaded by AlexandruScvortov at Tue Feb 12 18:43:53 UTC 2013
Distributions NixOS:0.7
Executables sexp
Downloads 1530 total (8 in the last 30 days)
Rating (no votes yet) [estimated by rule of succession]
Your Rating
  • λ
  • λ
  • λ
Status Docs uploaded by user
Build status unknown [no reports yet]
Hackage Matrix CI




Maintainer's Corner

For package maintainers and hackage trustees

Readme for sexp-0.5

[back to package description]


S-Expression parsing/printing made fun and easy


sexp provides an S-expression data-type, and printers and parsers that work on all data-types that have Typeable and Data instances.

λ > import Language.Sexp

λ > data MyType = Foo { unFoo :: Int } deriving ( Data, Show, Typeable )

λ > instance Sexpable MyType

λ > toSexp (Foo 23)
List [Atom "Foo",List [Atom "unFoo",Atom "23"]]

λ > printMach (toSexp (Foo 23))
"(Foo (unFoo 23))"

λ > parseExn (printMach (toSexp (Foo 23)))
[List [Atom "Foo",List [Atom "unFoo",Atom "23"]]]

λ > fromSexp (head (parseExn (printMach (toSexp (Foo 23))))) :: Maybe MyType
Just (Foo {unFoo = 23})