14 lines
621 B
Plaintext
14 lines
621 B
Plaintext
#import nat
|
|
|
|
fib =
|
|
|
|
~&izZB?( # test the sign bit of the argument
|
|
<'fib of negative'>!%, # throw an exception if it's negative
|
|
{0,1}^?<a( # test the argument to a recursively defined function
|
|
~&a, # if the argument was a member of {0,1}, return it
|
|
sum^|W( # otherwise return the sum of two recursive calls
|
|
~&, # to the function thus defined
|
|
predecessor^~( # with the respective predecessors of
|
|
~&, # the given argument
|
|
predecessor)))) # and the predecessor thereof
|