榆树返回整数而不是Bool,编译错误?

fro*_*ost 4 boolean compiler-bug elm

函数签名清楚地表明它应该返回一个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
Run Code Online (Sandbox Code Playgroud)

它似乎有时工作:

> isLeapYear 2000
True : Bool
> isLeapYear 1800
False : Bool
Run Code Online (Sandbox Code Playgroud)

Luk*_*ard 7

这是我去年提交的编译器错误,现已修复.

/=当一个参数出现时,它仅影响运算符0:替换(modBy 100 year /= 0)(not (modBy 100 year == 0))将解决问题.

该漏洞已在源存储库中修复,但我不知道该修复程序何时会被释放.