pythonparsinghaskelldslconstruct

Haskell equivalent of Python's "Construct"


Construct is a DSL implemented in Python used to describe data structures (binary and textual). Once you have the data structure described, construct can parse and build it for you. Which is good ("DRY", "Declarative", "Denotational-Semantics"...)

Usage example:

# code from construct.formats.graphics.png
itxt_info = Struct("itxt_info",
  CString("keyword"),
  UBInt8("compression_flag"),
  compression_method,
  CString("language_tag"),
  CString("translated_keyword"),
  OnDemand(
    Field("text",
      lambda ctx: ctx._.length - (len(ctx.keyword) + 
      len(ctx.language_tag) + len(ctx.translated_keyword) + 5),
    ),
  ),
)

I am in need for such a tool for Haskell and I wonder if something like this exists.

I know of:

I guess one must use Template Haskell to achieve this?


Solution

  • Currently (afaik) there is no equivalent to Construct in Haskell.

    One can be implemented using Template Haskell.