榆树返回整数代替布尔,编译器错误?

问题描述 投票:4回答:1

函数签名明确指出,它应该返回一个布尔所以为什么函数返回96?更重要的是,编译器认为,96实际上是一个布尔值。这是一个错误?

> 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
boolean elm compiler-bug
1个回答
7
投票

这是我去年和它现在已经固定提起compiler bug

它仅影响/=操作时,一种说法是0:与(modBy 100 year /= 0)更换(not (modBy 100 year == 0))将解决该问题。

该bug已被固定在源代码库,但我不知道什么时候该修补程序将被释放。

© www.soinside.com 2019 - 2024. All rights reserved.