summary refs log tree commit diff stats
path: root/doc
diff options
context:
space:
mode:
authorAlexander <achasch@gmail.com>2015-06-16 16:14:23 +0300
committerAlexander <achasch@gmail.com>2015-06-16 16:14:23 +0300
commit77b51df09c6e853e4e852b8676ea0c2666b7683b (patch)
treee398e93f111c85c88d39b16bad8c59974dbf9685 /doc
parent5e2d7e81a23750661dca883adaa97745234879c4 (diff)
downloadNim-77b51df09c6e853e4e852b8676ea0c2666b7683b.tar.gz
Update tut1.txt
Diffstat (limited to 'doc')
-rw-r--r--doc/tut1.txt19
1 files changed, 12 insertions, 7 deletions
diff --git a/doc/tut1.txt b/doc/tut1.txt
index 084de453a..500480cf0 100644
--- a/doc/tut1.txt
+++ b/doc/tut1.txt
@@ -757,20 +757,25 @@ However, this cannot be done for mutually recursive procedures:
   # forward declaration:
   proc even(n: int): bool
 
-  proc odd(n: int): bool =
-    if n == 0: 
-      true
+proc even(n: int): bool
+
+proc odd(n: int): bool =
+  assert(n >= 0) # makes sure we don't run into negative recursion
+  if n == 0: false
+  else:
     n == 1 or even(n-1)
 
-  proc even(n: int): bool =
-    if n == 1: 
-      false
+proc even(n: int): bool =
+  assert(n >= 0) # makes sure we don't run into negative recursion
+  if n == 1: false
+  else:
     n == 0 or odd(n-1)
 
 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
 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
 declarations.