]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.scl.tutorial/scl/Tutorial/1.03 Evaluation semantics.md
Import org.simantics.scl.tutorial from incubator SVN repo
[simantics/platform.git] / bundles / org.simantics.scl.tutorial / scl / Tutorial / 1.03 Evaluation semantics.md
1 # Evaluation semantics\r
2 \r
3 ## Single equation\r
4 \r
5 Assume we have given the following definition:\r
6 ~~~\r
7 f x = x + 1\r
8 ~~~\r
9 \r
10 Then the expression `f (f 13)` is evaluated in this way:\r
11 \r
12 ~~~\r
13 f (f 13)\r
14 f (13 + 1)        because f 13 = 13 + 1\r
15 f 14\r
16 14 + 1            because f 14 = 14 + 1\r
17 15\r
18 ~~~\r
19 \r
20 ## Multiple equations\r
21 \r
22 If we have a more complicated function definition:\r
23 ~~~\r
24 fib 1 = 1\r
25 fib 2 = 1\r
26 fib n = fib (n-1) + fib (n-2)\r
27 ~~~\r
28 \r
29 the expression `fib 4` is evaluated as\r
30 \r
31  ~~~\r
32 fib 4\r
33 fib (4-1) + fib (4-2)              because fib 4 = fib (4-1) + fib (4-2)\r
34 fib 3 + fib 2\r
35 (fib (3-1) + fib (3-2)) + fib 2    because fib 3 = fib (3-1) + fib (3-2)\r
36 fib 2 + fib 1 + fib 2              because fib 3 = fib (3-1) + fib (3-2)\r
37 1 + fib 1 + fib 2                  because fib 2 = 1\r
38 1 + 1 + fib 2                      because fib 1 = 1\r
39 2 + fib 2     \r
40 2 + 1                              because fib 2 = 1\r
41 3\r
42  ~~~\r