# 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.