Update tut1.txt

This commit is contained in:
Alexander 2015-06-16 16:14:23 +03:00
commit 77b51df09c

View file

@ -757,20 +757,25 @@ However, this cannot be done for mutually recursive procedures:
# forward declaration: # forward declaration:
proc even(n: int): bool proc even(n: int): bool
proc even(n: int): bool
proc odd(n: int): bool = proc odd(n: int): bool =
if n == 0: assert(n >= 0) # makes sure we don't run into negative recursion
true if n == 0: false
else:
n == 1 or even(n-1) n == 1 or even(n-1)
proc even(n: int): bool = proc even(n: int): bool =
if n == 1: assert(n >= 0) # makes sure we don't run into negative recursion
false if n == 1: false
else:
n == 0 or odd(n-1) n == 0 or odd(n-1)
Here ``odd`` depends on ``even`` and vice versa. Thus ``even`` needs to be Here ``odd`` depends on ``even`` and vice versa. Thus ``even`` needs to be
introduced to the compiler before it is completely defined. The syntax for introduced to the compiler before it is completely defined. The syntax for
such a forward declaration is simple: just omit the ``=`` and the such a forward declaration is simple: just omit the ``=`` and the
procedure's body. procedure's body. The ``assert`` just adds border conditions, and will be
covered later in `Modules`_ section.
Later versions of the language will weaken the requirements for forward Later versions of the language will weaken the requirements for forward
declarations. declarations.