]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - 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
diff --git a/bundles/org.simantics.scl.tutorial/scl/Tutorial/1.03 Evaluation semantics.md b/bundles/org.simantics.scl.tutorial/scl/Tutorial/1.03 Evaluation semantics.md
new file mode 100644 (file)
index 0000000..5c9007f
--- /dev/null
@@ -0,0 +1,42 @@
+# Evaluation semantics\r
+\r
+## Single equation\r
+\r
+Assume we have given the following definition:\r
+~~~\r
+f x = x + 1\r
+~~~\r
+\r
+Then the expression `f (f 13)` is evaluated in this way:\r
+\r
+~~~\r
+f (f 13)\r
+f (13 + 1)        because f 13 = 13 + 1\r
+f 14\r
+14 + 1            because f 14 = 14 + 1\r
+15\r
+~~~\r
+\r
+## Multiple equations\r
+\r
+If we have a more complicated function definition:\r
+~~~\r
+fib 1 = 1\r
+fib 2 = 1\r
+fib n = fib (n-1) + fib (n-2)\r
+~~~\r
+\r
+the expression `fib 4` is evaluated as\r
+\r
+ ~~~\r
+fib 4\r
+fib (4-1) + fib (4-2)              because fib 4 = fib (4-1) + fib (4-2)\r
+fib 3 + fib 2\r
+(fib (3-1) + fib (3-2)) + fib 2    because fib 3 = fib (3-1) + fib (3-2)\r
+fib 2 + fib 1 + fib 2              because fib 3 = fib (3-1) + fib (3-2)\r
+1 + fib 1 + fib 2                  because fib 2 = 1\r
+1 + 1 + fib 2                      because fib 1 = 1\r
+2 + fib 2     \r
+2 + 1                              because fib 2 = 1\r
+3\r
+ ~~~\r