小编Kai*_*Kai的帖子

带透镜和拉链的遍历树

我正在学习镜头包.我必须说这是一项相当具有挑战性的任务.

有人能告诉我如何使用拉链从镜头遍历一棵树吗?特别是,如何编写一个带有根列表并允许我访问子树分支的函数?

假设我有这棵树.如果我的输入是[1, 3],该功能应该允许我访问节点10和11.

import Control.Lens
import Data.Tree
import Data.Tree.Lens

testTree = Node 1 [ Node 2 [ Node 4 [ Node 6 [], Node 8 [] ],
                             Node 5 [ Node 7 [], Node 9 [] ] ],
                    Node 3 [ Node 10 [], 
                             Node 11 [] ] 
                  ]

zipperTree = zipper testTree
Run Code Online (Sandbox Code Playgroud)

另外,我如何使用saveTape和restoreTape保存遍历路径(到StateT或IORef)?

haskell lenses haskell-lens

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

在haskell中设计具有大量构造函数的数据类型

是否有另一种方式来写这样的东西:

data Message = Message1 Int Int ByteString
             | Message2 Double Int Int
             | Message3 Double Double
             .....
             | Message256 CustomType
Run Code Online (Sandbox Code Playgroud)

有太多的构造函数,并且很难使用记录语法.我真正想要做的是编写解析器,是否有一些替代方法?

parse :: Bytestring -> Parser Message
Run Code Online (Sandbox Code Playgroud)

haskell

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

标签 统计

haskell ×2

haskell-lens ×1

lenses ×1