Почему `NaN` является возможным значением для типа`Int` в Elm?
Я недавно начал изучать вяз. Когда я увидел Int
типа я предположил, что это было что-то вроде Хаскелла Int
, который (я думаю) машина целое число.
Но я был удивлен, увидев это:
> Result.withDefault 0 <| String.toInt "-"
NaN : Int
NaN
это концепция с плавающей точкой, которая не должна применяться к целым числам. Кажется, что это может быть утечка из JS, что подразумевает, что Int
представляется как JS Number
,
Это тот случай? Почему было принято это дизайнерское решение, и где я могу узнать о нем?
(Также два небольших вопроса:
- Почему нет
NaN
действительный литерал? - Как мне проверить, чтобы убедиться,
Int
значение неNaN
? ФункцияisNaN
имеет типFloat -> Bool
http://package.elm-lang.org/packages/elm-lang/core/latest/Basics
)
2 ответа
Решение
NaN
не является действительным Int
значение. Это ошибка в elm-lang/core
пакет, который с тех пор был исправлен на master, но еще не был выпущен.
Отвечая на второй второстепенный вопрос (это ужасно, но все еще не устарело) NaN
кажется единственным x
такой, что x /= x