Constructは Python で実装された DSL で、データ構造 (バイナリおよびテキスト) を記述するために使用されます。データ構造を記述したら、construct はそれを解析して構築できます。どちらが良いか (「DRY」、「宣言型」、「表示意味論」...)
使用例:
# 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),
),
),
)
私は Haskell 用のそのようなツールを必要としています。このようなものが存在するのだろうかと思います。
私は知っています:
- Data.Binary: ユーザーが解析と構築を別々に実装
- Parsec: 解析専用? テキストだけ?
これを達成するには、テンプレート Haskell を使用する必要があると思いますか?