Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- {-# LANGUAGE MultiParamTypeClasses #-}
- import Control.Monad
- class Collide a b where
- collide :: a -> b -> String
- collide _ _ = ""
- data Spaceship = Spaceship
- data Asteroid = Asteroid String
- instance Show Asteroid where
- show (Asteroid str) = str ++ " asteroid"
- instance Collide Spaceship Spaceship where
- collide _ _ = "Space catastrophy"
- instance Collide Spaceship Asteroid where
- collide _ a = "Impact with " ++ show a
- data Object = Spaceship2 | Asteroid2 String
- instance Show Object where
- show Spaceship2 = "Spaceship"
- show (Asteroid2 str) = str ++ " asteroid"
- collide2 Spaceship2 Spaceship2 = "Space catastrophy"
- collide2 Spaceship2 a@(Asteroid2 _) = "Impact with " ++ show a
- collide2 _ _ = ""
- main = do forM_ [collide Spaceship Spaceship,
- collide Spaceship (Asteroid "Big"),
- collide Spaceship (Asteroid "Small")]
- putStrLn
- forM_ [collide2 Spaceship2 Spaceship2,
- collide2 Spaceship2 (Asteroid2 "Big"),
- collide2 Spaceship2 (Asteroid2 "Small"),
- collide2 (Asteroid2 "") (Asteroid2 "")]
- putStrLn
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement