Difference between revisions of "Solution1.html"
Jump to navigation
Jump to search
(New page: <haskell> maternalGrandfather :: Sheep -> Maybe Sheep maternalGrandfather s = return s >>= \ms -> mother ms >>= \m -> father m fathersMaternalGrandmother :: Sheep -> Mayb...) |
(No difference)
|
Revision as of 15:59, 21 December 2011
maternalGrandfather :: Sheep -> Maybe Sheep
maternalGrandfather s =
return s >>= \ms ->
mother ms >>= \m ->
father m
fathersMaternalGrandmother :: Sheep -> Maybe Sheep
fathersMaternalGrandMother s =
return s >>= \ms ->
father ms >>= \f ->
mother s >>= \gm ->
mother gm
mothersPaternalGrandfather :: Sheep -> Maybe Sheep
mothersPaternalGrandfather s =
return s >>= \ms ->
mother ms >>= \m ->
father m >>= \gf ->
father gf
Note: the return
s are not not necessary; they are only used for the sake of the exercise.
An alternative solution without use of return
:
maternalGrandfather :: Sheep -> Maybe Sheep
maternalGrandfather s =
mother s >>= \m ->
father m
fathersMaternalGrandmother :: Sheep -> Maybe Sheep
fathersMaternalGrandMother s =
father s >>= \f ->
mother s >>= \gm ->
mother gm
mothersPaternalGrandfather :: Sheep -> Maybe Sheep
mothersPaternalGrandfather s =
mother s >>= \m ->
father m >>= \gf ->
father gf