So let me just tell what the algorithm is, for people who do not speak haskell.
the second line says
/= is unequal.
y modulo 4 = 0 OR y modulo 100 /= 0 AND y mod 400 = 0
Yes this is boolean algebra.
Fyi I have found the bug, I just thought this might be an interesting exercise.
I will probably update this later, or write a piece on what the bug is,
but that might not be a long article.