建造 是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.

秒差距 只会帮助你分析的文本。没有的二进制数据(如容易地),没有书写。工作是经常 Strings.还有 ByteString 等同于hackage.

对你的例上我使用的数据。二进制文件和编写定制的 put/geters自己。看看 分析器类别在hackage 更多的选择。

我不知道任何有关蟒蛇或构造的,因此这可能不是你所寻找的,但是为简单的数据结构你总是可以只是获得阅读:

data Test a = I Int | S a deriving (Read,Show)

现在,用于表达

read "S 123" :: Test Double

GHCi会发:S123.0

为什么更复杂的,你可以让一个实例读使用秒差距.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top