Elm 返回整数而不是 Bool,编译器错误?
Elm returning integer instead of Bool, compiler bug?
函数签名明确指出它应该 return 一个 Bool 那么为什么函数 returning 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
这是我去年提交的 compiler bug,现在已经修复。
当一个参数为 0
时,它仅影响 /=
运算符:将 (modBy 100 year /= 0)
替换为 (not (modBy 100 year == 0))
将解决该问题。
该bug已在源代码库中修复,但不知何时发布修复。
函数签名明确指出它应该 return 一个 Bool 那么为什么函数 returning 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
这是我去年提交的 compiler bug,现在已经修复。
当一个参数为 0
时,它仅影响 /=
运算符:将 (modBy 100 year /= 0)
替换为 (not (modBy 100 year == 0))
将解决该问题。
该bug已在源代码库中修复,但不知何时发布修复。