Fix introduced erroneous use of "canonical" back to original wording. Fix faulty description of proc params behavior. Remove 'null' return type in example.

This commit is contained in:
Oscar Campbell 2015-05-26 16:28:44 +02:00
commit c593c47696
2 changed files with 5 additions and 4 deletions

View file

@ -25,15 +25,16 @@ A parameter may be declared with a default value which is used if the caller
does not provide a value for the argument. does not provide a value for the argument.
.. code-block:: nim .. code-block:: nim
# b is optional, 47 is its default value # b is optional with 47 as its default value
proc foo(a, b: int = 47): int proc foo(a: int, b: int = 47): int
Parameters can be declared mutable and so allow the proc to modify those Parameters can be declared mutable and so allow the proc to modify those
arguments, by using the type modifier `var`. arguments, by using the type modifier `var`.
.. code-block:: nim .. code-block:: nim
# "returning" a value to the caller through the 2nd argument # "returning" a value to the caller through the 2nd argument
proc foo(inp: int, outp: var int): void = # Notice that the function uses no actual return value at all (ie void)
proc foo(inp: int, outp: var int) =
outp = inp + 47 outp = inp + 47
If the proc declaration has no body, it is a `forward`:idx: declaration. If the If the proc declaration has no body, it is a `forward`:idx: declaration. If the

View file

@ -54,7 +54,7 @@ blindly:
.. code-block:: nim .. code-block:: nim
template mulIsCommutative{`*`(a, b)}(a, b: int): int = b*a template mulIsCommutative{`*`(a, b)}(a, b: int): int = b*a
What optimizers really need to do is a *canonization*: What optimizers really need to do is a *canonicalization*:
.. code-block:: nim .. code-block:: nim
template canonMul{`*`(a, b)}(a: int{lit}, b: int): int = b*a template canonMul{`*`(a, b)}(a: int{lit}, b: int): int = b*a