Handling math errors in Wipple
October 28, 2023
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.