Haskell相当于蟒蛇的"构造"
题
建造 是DSL实现Python用来描述数据结构(二进制和文本).一旦你有了数据结构描述的,建造可以分析,并建立它对您。这是很好("干","声明","Denotational语义"...)
使用的例子:
# 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 我不知道如果这样的存在。
我知道:
- 数据。二进制:用户实行解析和建筑分开
- 秒差距:只有用分析?只有文字?
我猜测一个人必须使用的模板Haskell来实现这一目标?
解决方案 3
目前(据我所知)没有同等的建造在Haskell.
一个可实施的使用模板Haskell.
其他提示
我说这取决于你想要做什么,如果你需要遵守任何现有的格式。
数据。二进制 将(意外的惊喜!) 帮助你的二进制数据,读和写。你可以写代码阅读写自己,或转让的详细信息,并产生所需要的代码数据结构采用一些额外的工具喜欢 漂移 或 得出.漂移作为一个预处理器,同时获得可以作为一个预处理器和TemplateHaskell.
秒差距 只会帮助你分析的文本。没有的二进制数据(如容易地),没有书写。工作是经常 String
s.还有 ByteString
等同于hackage.
对你的例上我使用的数据。二进制文件和编写定制的 put
/get
ers自己。看看 分析器类别在hackage 更多的选择。
我不知道任何有关蟒蛇或构造的,因此这可能不是你所寻找的,但是为简单的数据结构你总是可以只是获得阅读:
data Test a = I Int | S a deriving (Read,Show)
现在,用于表达
read "S 123" :: Test Double
GHCi会发:S123.0
为什么更复杂的,你可以让一个实例读使用秒差距.
不隶属于 StackOverflow