В сигнатуре функции четко указано, что она должна возвращать Bool, так почему функция возвращает 96?Более того, компилятор считает, что 96 на самом деле Bool.Это ошибка?
> isLeapYear year =\
| (modBy 4 year == 0) && (modBy 100 year /= 0) || (modBy 400 year == 0)
<function> : Int -> Bool
> isLeapYear 1996
96 : Bool
Кажется, иногда работает:
> isLeapYear 2000
True : Bool
> isLeapYear 1800
False : Bool