import Data.List import Data.Ord f :: (Eq a, Num a) => [a] -> String f (3 : 2 : _) = "FULL HOUSE" f (3 : _) = "THREE CARD" f (2 : 2 : _) = "TWO PAIR" f (2 : _) = "ONE PAIR" f _ = "NO HAND" main :: IO () main = interact $ f . sortBy (comparing Down) . map length . group . sort . words