Echo Writes Code

branch_case_else_unreachable.orchid

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
-- An Orchid program demonstrating the use of the `branch!`, `case!`, `else!`, and `unwind!`
-- keywords.

import! orchid.console;

main! {
	-- Edit to be 0 or 1 to change the behavior of the program.
	bind! number = 1;
	bind! parity = number % 2;

	-- The `branch! EXPR { PATTERNS... }` statement is used to introduce branching control flow. `EXPR`
	-- is evaluated exactly once, and then matched against the `PATTERNS...` inside the braces.
	branch! parity {
		-- `case! PATTERN = STMT;` is a pseudo-statement that can only appear inside the braces of a
		-- `branch!` statement.
		-- Exactly one `case!` will be selected to replace the `branch!` statement with its own
		-- statement.
		-- Together, all of the `case!`s must exhaustively cover the possible values of the `branch!`
		-- expression, and no two `case!`s can overlap.
		case! 0 = call! console.write_line "Even parity";
		case! 1 = call! console.write_line "Odd parity";

		-- In the case that many values can be lumped together under a "default" case, the `else!` keyword
		-- can be used.
		-- Here we invoke the `unwind! [MESSAGE]` statement, which causes an immediate assertion failure and
		-- crashes the program with a stack trace.
		else! = unwind! "It should not be possible to have a parity other than 0 or 1";
	}
}