Guest User

Untitled

a guest
Apr 22nd, 2018
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.90 KB | None | 0 0
  1. data Sheep = Sheep { name::String,
  2. mom::Maybe Sheep,
  3. dad::Maybe Sheep
  4. }
  5.  
  6. instance Show Sheep where
  7. show s = show ( name s )
  8.  
  9. comb :: Maybe a -> (a -> Maybe b) -> Maybe b
  10. comb Nothing _ = Nothing
  11. comb (Just x) f = f x
  12.  
  13. breedSheep :: Sheep
  14. breedSheep = let adam = Sheep "Adam" Nothing Nothing
  15. eve = Sheep "Eve" Nothing Nothing
  16. thierry = Sheep "Thierry" (Just eve) (Just adam)
  17. edith = Sheep "Edith" (Just eve) (Just adam)
  18. cecile = Sheep "Cecile" (Just edith) (Just thierry)
  19. in Sheep "Dolly" (Just cecile) Nothing
  20.  
  21. maternalGrandfather :: Sheep -> Maybe Sheep
  22. maternalGrandfather s = (Just s) `comb` mom `comb` dad
  23.  
  24. main :: IO ()
  25. main = let dolly = breedSheep
  26. in do { print (mom dolly); print (dad dolly); print (maternalGrandfather dolly); }
Add Comment
Please, Sign In to add comment