data ListItem a = Single a | Multiple a Int deriving (Show) decodeModified :: [ListItem a] -> [a] decodeModified = concatMap decodeHelper where decodeHelper (Single a) = [a] decodeHelper (Multiple a b) = replicate b a