Я новичок в 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, если вы делаете один тип, но я не уверен, как обращаться с несколькими типами данных.