Construct - это DSL, реализованный в Python, используемый для описания структур данных (двоичный и текстовый). После того, как вы описываете структуру данных, конструктор может анализировать и строить ее для вас. И это хорошо («СУХОЙ», «декларативной», «Денотационная-Семантика» ...) примерHaskell-эквивалент «Construct» Python
Использование:
# 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: Пользователь осуществляет синтаксический анализ и строительство отдельно
- Парсек: только для разбора? Только для текста?
Я предполагаю, что для этого нужно использовать шаблон Haskell?
+1. Мне нравится 'construct' –