import Data.Time.Calendar (fromGregorian) import Data.Time.Calendar.WeekDate (toWeekDate) longYear :: Integer -> Bool longYear y = let (_, w, _) = toWeekDate $ fromGregorian y 12 28 in 52 < w main :: IO () main = mapM_ print $ filter longYear [2000 .. 2100]