data Hand = Rock | Scissors | Paper deriving (Show, Eq, Enum) data Result = Won | Drew | Lost deriving (Show) rotateHand :: Hand -> Hand rotateHand Paper = Rock rotateHand h = succ h rsp :: Hand -> Hand -> Result rsp myHand hisHand | myHand == hisHand = Drew | rotateHand myHand == hisHand = Won | otherwise = Lost main :: IO () main = do [mine, his] <- map read . words <$> getLine print $ rsp (toEnum mine :: Hand) (toEnum his :: Hand)