Created stub
This commit is contained in:
parent
30fd7ae23c
commit
a9cd3c6fa8
|
@ -0,0 +1,65 @@
|
|||
(Work in progress)
|
||||
|
||||
This is a guide for people with experience in C or a similar language. The general tutorials can be found here:
|
||||
|
||||
http://nimrod-lang.org/tut1.html
|
||||
http://nimrod-lang.org/tut2.html
|
||||
|
||||
The manual provides a more or less complete overview of the language:
|
||||
|
||||
http://nimrod-lang.org/manual.html
|
||||
|
||||
### Structs - Tuples and Objects
|
||||
|
||||
Tuples and Objects in Nimrod are kind of like structs in C, but not really.
|
||||
|
||||
### Interfacing C and Nimrod
|
||||
|
||||
See [Foreign Function Interface](http://nimrod-lang.org/manual.html#foreign-function-interface)
|
||||
|
||||
### Cheat Sheet
|
||||
Note: Code examples are not exactly one-to-one, there may be subtle differences in the semantics. See comments.
|
||||
<table>
|
||||
<tr>
|
||||
<th>C</th><th>Nimrod</th><th>Comment</th>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>
|
||||
```C
|
||||
int x = foobar() ? 42 : 0;
|
||||
```
|
||||
</td>
|
||||
<td>
|
||||
```Nimrod
|
||||
var x = if foobar(): 42 else: 0
|
||||
```
|
||||
</td>
|
||||
<td>
|
||||
<i>If-statements return the value of the expression they evaluate to, so Nimrod doesn't need a </i><b>ternary operator</b>.</i>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>
|
||||
```C
|
||||
void foobar(person_t *a) {
|
||||
person_t b;
|
||||
b = *a;
|
||||
b.name = "Bob";
|
||||
*a = b;
|
||||
}
|
||||
```
|
||||
</td>
|
||||
<td>
|
||||
```Nimrod
|
||||
proc foobar(a: ref TPerson) =
|
||||
var b: TPerson
|
||||
b = a[]
|
||||
b.name = "Bob"
|
||||
a[] = b
|
||||
```
|
||||
</td>
|
||||
<td><b>Dereference.</b> <i>In C, only the pointer to the strings in the struct is copied. In Nimrod, the string is also copied, but refs are not deep-copied.</i> </td>
|
||||
</tr>
|
||||
</table>
|
Loading…
Reference in New Issue