Следующая программа 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 ведет себя последовательно.