Handling math errors in Wipple
Originally posted on wipple.org.
Previously, Wipple’s built-in math operations like / and sqrt would cause the program to crash
if provided an invalid input. This caused problems when graphing functions using the math library:
plot (x -> 1 / x) -- crashed when x = 0!
Really, what we want is to skip graphing any points that produce an undefined result. So now,
Wipple’s Number type has a new member — undefined!
Rather than crashing, all of Wipple’s math operations now return undefined if provided an invalid
or undefined input. This means undefined propagates through the program:
x : sqrt -1
show x -- undefined
show (x + 1) -- undefined
When comparing undefined with another number, the result is always False. If you need to check
whether an number is undefined, you can use undefined?:
x : 0 / 0
show (x = undefined) -- False
show (undefined? x) -- True
This behavior matches the NaN value in the IEEE 754
floating-point standard (Wipple’s Number type has a decimal representation, however), and indeed
undefined is represented as NaN in JavaScript.