haskell - 如何使用 Scrap Your Boilerplate 来改造一棵树?

标签 haskell tree traversal

我是 Haskell 新手,所以我想弄清楚如何进行树遍历。

这是我在几篇论文中看到的 Company 示例(略有改动)

data Company  = C [Dept]               deriving (Eq, Show, Typeable, Data)
data Dept     = D Name Manager [Unit]  deriving (Eq, Show, Typeable, Data)
data ThinkTank= TK Name [Unit]         deriving (Eq, Show, Typeable, Data)
data Unit     = PU Employee | DU Dept  deriving (Eq, Show, Typeable, Data)
data Employee = E Person Salary        deriving (Eq, Show, Typeable, Data)
data Person   = P Name Address         deriving (Eq, Show, Typeable, Data)
data Salary   = S Float                deriving (Eq, Show, Typeable, Data)
type Manager  = Employee
type Name     = String
type Address  = String

我想做的是将一名员工从他所在的位置转移到特定的部门。此人可能在某个部门或智库中。

在SYB中,只要做一种类型,似乎很容易做事,但我不知道如何处理多种数据类型。

最佳答案

cs.uu.nl 上的教程似乎消失了。我为此苦苦挣扎了一段时间,梳理了论文,然后写下了 this tutorial 。希望您觉得它有用。

关于haskell - 如何使用 Scrap Your Boilerplate 来改造一棵树?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2391360/

相关文章:

c# - C# 是否支持函数组合?

string - 通用 Haskell 'stringy' 函数,或者:lines::IsString a => a -> [a] 在哪里?

opengl - 使用 Opengl 进行等距投影

parsing - Ocaml 解析字符串以生成树

java - JTable:改变遍历顺序

scala - Scala 中的图遍历

遍历和更新列表的Python列表

haskell - 如何为递归单例类型定义 NFData 实例?

algorithm - 如何使用平衡二叉树来解决这个挑战?

java - 从 SQL 到 HTML UL 的树状结构