FreeMat
|
Section: Flow Control
The retall
statement is used to return to the base workspace from a nested keyboard
session. It is equivalent to forcing execution to return to the main prompt, regardless of the level of nesting of keyboard
sessions, or which functions are running. The syntax is simple
retall
The retall
is a convenient way to stop debugging. In the process of debugging a complex program or set of functions, you may find yourself 5 function calls down into the program only to discover the problem. After fixing it, issueing a retall
effectively forces FreeMat to exit your program and return to the interactive prompt.
Here we demonstrate an extreme example of retall
. We are debugging a recursive function self
to calculate the sum of the first N integers. When the function is called, a keyboard
session is initiated after the function has called itself N times. At this keyboard
prompt, we issue another call to self
and get another keyboard
prompt, this time with a depth of 2. A retall
statement returns us to the top level without executing the remainder of either the first or second call to self
:
self.m
function y = self(n) if (n>1) y = n + self(n-1); printf('y is %d\n',y); else y = 1; printf('y is initialized to one\n'); keyboard end
--> self(4) y is initialized to one [self,8]--> self(6) y is initialized to one [self,8]--> retall