Merge pull request #3 from def-/minor-fixes

Minor fixes
This commit is contained in:
Flaviu Tamas 2014-07-16 17:24:46 -04:00
commit fa10f64675
7 changed files with 21 additions and 20 deletions

View file

@ -24,6 +24,7 @@ block:
Parentheses can be used as an expression, but they do not provide end of statement inference, so it is necessary to place semicolons yourself.
``` nimrod
# This doesn't work and I don't know what it should do
square((
var result = newSeq[float]();
for i in 0..1000:
@ -41,4 +42,4 @@ proc square(inSeq: seq[float]): seq[float] = (
result[i] = v*v;
)
)
```
```

View file

@ -31,14 +31,14 @@ else:
proc positiveOrNegative(num: int): string =
result = case num
of low(int)..-1:
"negative"
of 0:
"zero"
of 1..high(int):
"positive"
else:
"impossible"
of low(int)..-1:
"negative"
of 0:
"zero"
of 1..high(int):
"positive"
else:
"impossible"
echo positiveOrNegative(-1)
```
@ -63,4 +63,4 @@ of 10: echo "D"
``` console
$ nimrod c -r ./case_stmts_1.nim
C
```
```

View file

@ -9,10 +9,10 @@ The code for a simple hello world program is as follows:
echo "Hello World"
```
To compile and execute the program, the following command should be run
Save this text as `helloworld.nim`. To compile and execute the program, the following command should be run
``` console
$ nimrod c -r --verbosity:0 ./helloworld.nim
$ nimrod c -r --verbosity:0 helloworld.nim
Hello World
```

View file

@ -4,7 +4,7 @@ title: If, Else, While
# If, Else, While
Nimrod many different control flow constructs, including the standard `if`s, `else`s, and `while`s. However, Nimrod does not use an `else if` construct like many languages, it uses a more condensed `elif`.
Nimrod has many different control flow constructs, including the standard `if`s, `else`s, and `while`s. However, Nimrod does not use an `else if` construct like many languages, it uses a more condensed `elif`.
When inside a loop, `continue` can be used to skip the rest of the loop body and to begin the next iteration; `break` can be used to immediately leave the loop body.
@ -31,4 +31,4 @@ block busyloops:
while true:
while true:
break busyloops
```
```

View file

@ -8,9 +8,9 @@ Nimrod has several primitive types:
* signed integers: `int8`, `int16`, `int32`, `int64`, and `int`, where `int` is the same size as a pointer
* unsigned integers are similar with `u` prepended to the type
* floating points numbers: `float32`, `float64`, and `float`, where `float` is the processor's fastest type
* characters: `char`, and basically an alias for uint8
* characters: `char`, which is basically an alias for uint8
To indicate the size of an integer literal, append `u` or `i` and the size you'd like to the end. However, this is not typically necessary.
To indicate the size of an integer literal, append `u` or `i` and the size you'd like to the end. However, usually this is not necessary.
Integers can also have `0[xX]`, `0o`, `0[Bb]` prepended to indicate a hex, octal, or binary literal, respectively. Underscores are also valid in literals, and can help with readability.
@ -22,7 +22,7 @@ let
c: uint8 = 256 # Compile time error
```
Precedence rules are the same as most other languages, but instead of `^`, `&`, `|`, `>>`, `<<`, the `xor`, `and`, `or`, `shr`, `shl` operators are used, respectively.
Precedence rules are the same as in most other languages, but instead of `^`, `&`, `|`, `>>`, `<<`, the `xor`, `and`, `or`, `shr`, `shl` operators are used, respectively.
``` nimrod
let
@ -34,4 +34,4 @@ echo 4/2
$ nimrod c -r numbers2.nim
2.0
```
Another difference that may be surprising is that the `/` operator returns a floating point result, even when the operands are integers. If integer division is needed, the `div` operator should be used.
Another difference that may be surprising is that the `/` operator returns a floating point result, even when the operands are integers. If integer division is needed, the `div` operator should be used.

View file

@ -57,4 +57,4 @@ A `const` variable's value will be evaluated at compile-time, so if you inspect
STRING_LITERAL(TMP129, "abcdefghijklmnopqrstuvwxyz", 26);
```
The only limitation with const is that compile-time evaluation cannot interface with C because there is no compile-time foreign function interface at this time.
The only limitation with const is that compile-time evaluation cannot interface with C because there is no compile-time foreign function interface at this time.

View file

@ -12,7 +12,7 @@ proc `**`(number, power: int): int =
result *= number
```
A possible gotcha is declaring a variable called result and expecting it to have the same semantics.
A possible gotcha is declaring a new variable called `result` and expecting it to have the same semantics.
``` nimrod
proc unexpected(): int =