boolean - Elm 返回整数而不是 Bool,编译器错误?

标签 boolean elm compiler-bug

函数签名明确指出它应该返回一个 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

最佳答案

这是一个 compiler bug我去年提交的,现在已经修复。

它仅影响 /=当一个参数为 0 时的运算符: 替换 (modBy 100 year /= 0)(not (modBy 100 year == 0))将解决这个问题。

该错误已在源存储库中修复,但我不知道修复何时发布。

关于boolean - Elm 返回整数而不是 Bool,编译器错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54532295/

相关文章:

c - 无法在集合程序 (C) 中获取数组

java - 使用 Jackson 解析 json 中的 boolean 值时的额外数据

haskell - 如何为 Elm post 请求指定正文媒体类型?

elm - 在 Elm 中使用 PreventDefault

generics - 通用静态方法调用无法在 Java 8 中编译

c++ - C++ 中的伊辛模型

java - 将多个 int 值与 0 进行比较的有效方法

elm - 有没有一种在 elm 中插入随机 HTML/JS 片段的好方法?

c++ - 构建共享库时 G++ 和 clang++ 与标准库不兼容?

c# - 为什么在构建将运算符 == 提升为可为 null 的表达式时,对泛型和非泛型结构的处理方式不同?