我对Haskell还比较陌生(仍在努力理解单子的概念)。现在我有一个树形结构的问题:
type Tree = [DataA]
data DataA = DataA1 [DataB]
| DataA2 String
| DataA3 String [DataA]
deriving Show
data DataB = DataB1 [DataA]
| DataB2 String
| DataB3 String [DataB]
deriving Show
我希望能够遍历这个树并生成一个新的过滤后的树。例如,我可能想将树中的所有DataB2更改为“foo”。
我已经看到了一些树的示例,它们在同一个数据部分中,并且构造函数相似。
在Python世界中,我只需遍历列表,匹配所需内容并替换值即可。
在Haskell中,我猜我需要能够复制我的树,但是如何处理嵌入在构造函数和不同数据类型中的列表呢?