我是 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

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

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

最佳答案

您需要先阅读SYB教程,

  • http://www.cs.uu.nl/wiki/bin/view/GenericProgramming/SYB

  • 主要的遍历功能是:
  • http://www.haskell.org/ghc/dist/stable/docs/libraries/syb/Data-Generics-Schemes.html#v%3Aeverywhere
  • http://www.haskell.org/ghc/dist/stable/docs/libraries/syb/Data-Generics-Schemes.html#v%3Asomewhere

  • 尝试一下这些内容,以了解API,然后您将逐步解决这一问题。

    但是,SYB泛型不只是初学者Haskell练习而已。

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

    10-11 21:02