下面的 Elm 程序应该在按下鼠标按钮时打印 10,如果没有按下鼠标按钮,则打印 20,但它总是打印 20(在http://elm-lang.org/try上运行它时):
import Mouse
import Text (asText)
import Signal (map)
nextVal : Bool -> Int
nextVal down =
case down of
true -> 10
false -> 20
main = map asText (map nextVal Mouse.isDown)
这种行为的原因是一个简单的拼写错误——如果你true
用True
和false
替换False
,一切都按预期工作。
但是为什么我没有得到一个编译器错误呢?我本以为与我从 elm-repl 收到的错误消息类似:Could not find variable 'true'
更新 事实上(正如@Apanatshka 的答案所暗示的那样),此代码也适用于 REPL,因此 Elm 的行为始终如一。