Difference between revisions of "Solution1.html"

From HaskellWiki
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...)
 
m (Contents transferred to single solutions page)
 
(One intermediate revision by the same user not shown)
Line 43: Line 43:
 
father gf
 
father gf
 
</haskell>
 
</haskell>
  +
  +
[[Category:Pages to be removed]]

Latest revision as of 08:41, 9 April 2021

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 returns 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