summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'content/fate_v1/computations/conditionals/_index.md')
-rw-r--r--content/fate_v1/computations/conditionals/_index.md54
1 files changed, 54 insertions, 0 deletions
diff --git a/content/fate_v1/computations/conditionals/_index.md b/content/fate_v1/computations/conditionals/_index.md
new file mode 100644
index 0000000..2953489
--- /dev/null
+++ b/content/fate_v1/computations/conditionals/_index.md
@@ -0,0 +1,54 @@
+---
+title: Conditionals
+---
+This page presents the computation operators that allow a choice depending on
+some condition. All possible returned values must be of the same type.
+
+### IF-ELSE
+{{< fatecode >}}(if_else [BOOL] [C0 = COMPUTATION] [C1 = COMPUTATION]){{< /fatecode >}}
+
+Returns `C0` is `[BOOL]` yields true, `C1` otherwise.
+
+### COND
+{{< fatecode >}}(cond ([B0 = BOOL] [C0 = COMPUTATION]) ... ([BN = BOOL] [CN = COMPUTATION])){{< /fatecode >}}
+
+Returns `<Ci>`, such that `<Bi>` is the first to hold true. If there is not such
+`Bi`, returns `[CN]`.
+
+### SWITCH
+{{< fatecode >}}(switch [T = COMPUTATION] ([V0 = COMPUTATION] [C0 = COMPUTATION]) ... ([VN = BOOL] [CN = COMPUTATION]) [D = COMPUTATION]){{< /fatecode >}}a
+
+Returns the first `Ci` such that `Vi` is equal to `T`. If there is not such
+`Vi`, returns `[D]`.
+
+## Examples
+{{< fatecode >}}(cond
+ ((false) (false))
+ ((false) (false))
+ ((true)
+ (cond
+ ((false) (false))
+ ((true) (not (is_member 3 test_list)))
+ ((true) (false))
+ )
+ )
+)
+{{< /fatecode >}}
+
+{{< fatecode >}}(switch 3
+ (0 (false))
+ (1 (false))
+ (3 (true))
+ (2 (false))
+ (false)
+)
+{{< /fatecode >}}
+
+{{< fatecode >}}(if_else (true)
+ (if_else (false)
+ (assert (false) FAILED: instruction ifelse E)
+ (set test_var (true))
+ )
+ (assert (false) FAILED: instruction ifelse F)
+)
+{{< /fatecode >}}