如何使用Scrap Your Boilerplate变换树?

Chr*_*ris 7 tree haskell traversal

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

以下是我在几篇论文中看到的公司示例(略有变化)

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
Run Code Online (Sandbox Code Playgroud)

我想做的是将员工从他所在的地方转移到某个特定的部门.这个人可能在部门或ThinkTank.

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

小智 6

cs.uu.nl上的教程似乎已经消失了.我挣扎了一段时间,通过论文梳理,然后写了这个教程.希望你觉得它有用.