Solution3.html
parent :: Sheep -> [Sheep]
parent s = (maybeToList (mother s)) ++ (maybeToList (father s))
grandparent :: Sheep -> [Sheep]
grandparent s = (maybeToList (paternalGrandfather s)) ++
(maybeToList (paternalGrandmother s)) ++
(maybeToList (maternalGrandfather s)) ++
(maybeToList (maternalGrandmother s))
Alternate solution:
parent :: Sheep -> [Sheep]
parent s = (maybeToList $ mother s) `mplus` (maybeToList $ father s)
grandparent :: Sheep -> [Sheep]
grandparent s = parent s >>= parent