on master help sign in
Switch isFinite to isInfinite and improve documentation
commitef19d7146d3386997eede7f7ecbbe2c1700ff90e authorEvan Czaplicki <info@elm-lang.org> dateThu 20 Mar 2014, 18:26 (13 years ago) parent804d895
2 files changed+24−10
libraries/Basics.elm+22−9 libraries/Native/Basics.js+2−1
libraries/Basics.elm+22−9
@@ -30,9 +30,6 @@ are your tuples so big?
3030# Number Conversions
3131@docs round, floor, ceiling, truncate, toFloat
3232
33−# Floating Point Checks
34−@docs isNaN, isFinite
35−
3633# Angle Conversions
3734All angle conversions result in &ldquo;standard Elm angles&rdquo;
3835which happen to be radians.
@@ -42,6 +39,9 @@ which happen to be radians.
4239# Polar Coordinates
4340@docs toPolar, fromPolar
4441
42+# Floating Point Checks
43+@docs isNaN, isInfinite
44+
4545# Tuples
4646@docs fst, snd
4747
@@ -274,17 +274,30 @@ ceiling = Native.Basics.ceiling
274274toFloat : Int -> Float
275275toFloat = Native.Basics.toFloat
276276
277−{- | Determines whether a float is an undefined or unrepresentable number,
278−such as 0/0. NaN stands for *not a number*.
277+{- | Determines whether a float is an undefined or unrepresentable number.
278+NaN stands for *not a number* and it is [a standardized part of floating point
279+numbers](http://en.wikipedia.org/wiki/NaN).
280+
281+ isNaN (0/0) == True
282+ isNaN (sqrt -1) == True
283+ isNaN (1/0) == False -- infinity is a number
284+ isNaN 1 == False
279285-}
280286isNaN : Float -> Bool
281287isNaN = Native.Basics.isNaN
282288
283−{- | Determines whether a float is finite. Positive and negative infinity are
284−valid floating point numbers, created by computations like `1/0` and `-1/0`.
289+{- | Determines whether a float is positive or negative infinity.
290+
291+ isInfinite (0/0) == False
292+ isInfinite (sqrt -1) == False
293+ isInfinite (1/0) == True
294+ isInfinite 1 == False
295+
296+Notice that NaN is not infinite! For float `n` to be finite implies that
297+`not (isInfinite n || isNaN n)` evaluates to `True`.
285298-}
286−isFinite : Float -> Bool
287−isFinite = Native.Basics.isFinite
299+isInfinite : Float -> Bool
300+isInfinite = Native.Basics.isInfinite
288301
289302-- Function Helpers
290303
libraries/Native/Basics.js+2−1
@@ -19,6 +19,7 @@ Elm.Native.Basics.make = function(elm) {
1919 return Utils.cmp(n,lo) < 0 ? lo : Utils.cmp(n,hi) > 0 ? hi : n; }
2020 function xor(a,b) { return a !== b; }
2121 function not(b) { return !b; }
22+ function isInfinite(n) { return n === Infinity || n === -Infinity }
2223
2324 function truncate(n) { return n|0; }
2425
@@ -54,7 +55,7 @@ Elm.Native.Basics.make = function(elm) {
5455 round:Math.round,
5556 toFloat:function(x) { return x; },
5657 isNaN:isNaN,
57− isFinite:isFinite
58+ isInfinite:isInfinite
5859 };
5960
6061 return elm.Native.Basics.values = basics;