小编liu*_*tao的帖子

在Haskell中对二进制数据进行Monadic解析

我是Haskell的新手,我的第一个项目是解析捕获的WLAN数据包.解析这种分组的一种常见模式是头字段将定义剩余字节的结构.作为一般示例,数据包的格式如下:

header + [payload A | payload B | ..] 
Run Code Online (Sandbox Code Playgroud)

其中标头中的标志字段(可以是位图)指定包中包括哪些有效载荷.有关此格式的具体示例,请查看radiotap.

类似的线程建议只使用这样的一系列parse操作:

parseAll = do
    hdr <- parseHeader
    pa <- parsePayloadA
    pb <- parsePayloadB
Run Code Online (Sandbox Code Playgroud)

然而,似乎不能在我的情况下应用有效载荷的存在A并且B由头部定义.换句话说,数据解析的控制流程需要遵循先前的解析结果.我想明白,如果有一种通用的方法来解析这种模式的二进制数据?

monads haskell

5
推荐指数
1
解决办法
176
查看次数

记录语法和总和类型

我有关于Haskell中的和类型的这个问题.

我想创建一个由两个或更多其他类型组成的和类型,每个类型可能包含多个字段.一个简单的例子是这样的:

data T3 = T1 { a :: Int, b :: Float} | T2 { x :: Char } deriving (Show)
Run Code Online (Sandbox Code Playgroud)

在我的理解,T1并且T2是其使用记录语法数据构造.看来,定义T3将成长为中域的数量T1T2增加.我的问题是,如果字段数量很大,如何实际处理这些求和类型构造函数?或者,将sum类型与记录语法混合是一个好主意吗?

haskell types algebraic-data-types

1
推荐指数
1
解决办法
1189
查看次数

标签 统计

haskell ×2

algebraic-data-types ×1

monads ×1

types ×1