В сигнатуре функции четко указано, что она должна возвращать 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
/=
против0
с обеих сторон. Например,1 /= 0
и0 /= 1
дают1 : Bool
, а1 /= 2
дают ожидаемоеTrue : Bool
. - person Chad Gilbert   schedule 05.02.2019elm-test
. - person frost   schedule 05.02.2019Debug.print
, поскольку она не только в REPL. - person Chad Gilbert   schedule 05.02.2019