Difference between revisions of "Type Coercion"

From MiniScript Wiki
Jump to navigation Jump to search
(fixed erroneous description of Infinity)
Line 23: Line 23:
  
 
`1/0 == "INF" | "Infinity"`
 
`1/0 == "INF" | "Infinity"`
The concept of infinity and negative infinity sort of exists, but isn't well-defined.
+
All numerical math is done according to standard IEEE floating-point rules, including well-defined behavior for Inf and NaN.  However, conversion of Inf and NaN to a string is undefined (implementation-dependent).

Revision as of 16:50, 20 February 2024

WIP

Known type coercion rules:

`null * 3 == #@!$` Any statement that begins with `null` is a compiler error, but this may change in the future. `(null)` is okay though.

`3 * null == 0` Multiplying by null yields 0.

`3 / null == Infinity` In division, null acts a lot like `0`.

`3 + "3" == "33"` If an expression contains a string, the entire expression will be coerced into a string.

`"3" * 5 == "33333` Multiplying a string by a number will replicate the string.

`"1234" / 2 == "12"` Dividing a string by a number will divide the length, then take a substring.

`1/0 == "INF" | "Infinity"` All numerical math is done according to standard IEEE floating-point rules, including well-defined behavior for Inf and NaN. However, conversion of Inf and NaN to a string is undefined (implementation-dependent).