Difference between revisions of "Type Coercion"

From MiniScript Wiki
Jump to navigation Jump to search
(fixed erroneous description of Infinity)
Line 3: Line 3:
 
Known type coercion rules:
 
Known type coercion rules:
  
`null * 3 == #@!$`
+
<c>null * 3 == #@!$</c>
 
Any statement that begins with `null` is a compiler error, but this may change in the future.
 
Any statement that begins with `null` is a compiler error, but this may change in the future.
 
`(null)` is okay though.
 
`(null)` is okay though.
  
`3 * null == 0`
+
<c>3 * null == 0</c>
 
Multiplying by null yields 0.
 
Multiplying by null yields 0.
  
`3 / null == Infinity`
+
<c>3 / null == Infinity</c>
 
In division, null acts a lot like `0`.
 
In division, null acts a lot like `0`.
  
`3 + "3" == "33"`
+
<c>3 + "3" == "33"</c>
 
If an expression contains a string, the entire expression will be coerced into a string.
 
If an expression contains a string, the entire expression will be coerced into a string.
  
`"3" * 5 == "33333`
+
<c>"3" * 5 == "33333</c>
 
Multiplying a string by a number will replicate the string.
 
Multiplying a string by a number will replicate the string.
  
`"1234" / 2 == "12"`
+
<c>"1234" / 2 == "12"</c>
 
Dividing a string by a number will divide the length, then take a substring.
 
Dividing a string by a number will divide the length, then take a substring.
  
`1/0 == "INF" | "Infinity"`
+
<c>1/0 == "INF" | "Infinity"</c>
 
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).
 
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:52, 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).