project euler problem 19

1901年からというのに気がつかなかったorz

main = print $ length $ filter is1Sun calendar
is1Sun ([y,m,d],w) = if y>=1901&&d==1&&w=="Sun" then True else False
calendar = zip [[y,m,d]|y<-[1900..2000],m<-[1..12],d<-[1..lastDay m y]] (cycle ["Mon","Tue","Wed","Thu","Fri","Sat","Sun"])
lastDay m y
    | m==9||m==4||m==6||m==11 = 30
    | m==2 = if mod y 4==0 && not (mod y 400/=0 && mod y 100==0) then 29 else 28
    | otherwise = 31