I didn’t realize that the function was available in its own scope. This information is going to help me do horrible things with pandas.
even 0 = true
even n = not (odd n-1)
odd 0 = false
odd n = not (even n-1) even 0 = true
even n = odd n-1
odd 0 = false
odd n = even n-1
I fed a C version of this (with unsigned n to keep the nasal daemons at bay) to clang and observed that it somehow manages to see through the mutual recursion, generating code that doesn't recurse or loop.