- type Salary = Float
- type Manager = Employee
- type Name = String
- data Dept = D Manager [Employee]
- data Employee = E Name Salary
- type RepDept_ = C Dept_D_ (:*: (Rec Manager) (Rec [Employee]))
- data Dept_D_
- type RepEmployee_ = C Employee_E_ (:*: (Rec Name) (Rec Salary))
- data Employee_E_
- data DeptFam a where
- dept :: Dept
- fixDept :: ZipperR Dept