mech 0.3.3

Mech is a programming language for building reactive systems like robots, games, and animations.
Documentation
option
===============================================================================

%% An `option` value represents either an empty value (`_`) or a value of an inner kind. Use `?` on kinds to indicate optionality.

1. Kind Syntax
-------------------------------------------------------------------------------

```mech:disabled
<u64?>
<string?>
<([u64],bool)?>
```

2. Construction
-------------------------------------------------------------------------------

```mech:disabled
x<u64?> := 123u64
y<u64?> := _
```

3. Guarded Unwrap
-------------------------------------------------------------------------------

Use postfix `?` on an expression to unwrap through guarded arms. Arms use the same box-drawing guard style as functions/state machines.

```mech:disabled
foo := x?
  │ x > 3u64 => x
  │ x == 3u64 => 0u64
  └ * => 0u64.
```

Tuple patterns are supported:

```mech:disabled
(x2,y2) := (x,y)?
  │ (x,y) => (x,y)
  └ * => (0u64,0u64).
```