Advertisement
Yurry

Untitled

Dec 13th, 2011
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. {-# LANGUAGE MultiParamTypeClasses #-}
  2. import Control.Monad
  3.  
  4. class Collide a b where
  5.     collide :: a -> b -> String
  6.     collide _ _ = ""
  7.    
  8. data Spaceship = Spaceship
  9. data Asteroid = Asteroid String
  10.  
  11. instance Show Asteroid where
  12.     show (Asteroid str) = str ++ " asteroid"
  13.  
  14. instance Collide Spaceship Spaceship where
  15.     collide _ _ = "Space catastrophy"
  16.    
  17. instance Collide Spaceship Asteroid where
  18.     collide _ a = "Impact with " ++ show a
  19.    
  20. data Object = Spaceship2 | Asteroid2 String
  21.  
  22. instance Show Object where
  23.     show Spaceship2 = "Spaceship"
  24.     show (Asteroid2 str) = str ++ " asteroid"
  25.  
  26. collide2 Spaceship2 Spaceship2 = "Space catastrophy"
  27. collide2 Spaceship2 a@(Asteroid2 _) = "Impact with " ++ show a
  28. collide2 _ _ = ""
  29.    
  30. main = do  forM_ [collide Spaceship Spaceship,
  31.               collide Spaceship (Asteroid "Big"),
  32.               collide Spaceship (Asteroid "Small")]
  33.              putStrLn
  34.            forM_ [collide2 Spaceship2 Spaceship2,
  35.                   collide2 Spaceship2 (Asteroid2 "Big"),
  36.                   collide2 Spaceship2 (Asteroid2 "Small"),
  37.                   collide2 (Asteroid2 "") (Asteroid2 "")]
  38.              putStrLn
  39.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement