# layout/switch **Symbol:** `layout/switch` **Use-case:** Multi-way equality dispatch in block syntax. Lowers to `switch` clause lists consumed by `compile/switch`. **Behaviour:** Does not accept peers. Header must be exactly `switch VALUE:` (one value expression). Inner `case` and `else` blocks are expanded by default **`layout/block`** (flat splice). `layout/switch` validates each child and emits: `(switch VALUE (COND-LIST BODY...) ... (else: BODY...))` Rules: - body entries must be `case` or `else` blocks only - `case` requires exactly one condition argument and it is passed through as the case's condition list expression - `else` takes no arguments - only one `else` is allowed - `case` cannot appear after `else` - empty body is allowed and lowers to `(switch VALUE)` **Syntax:** ``` switch VALUE: case COND-LIST: BODY case COND-LIST2: BODY else: BODY ``` **Examples:** ```koskari switch x: case [1]: "one" case [2 3]: "two-or-three" else: "meh" ;; -> (switch x ([1] "one") ([2 3] "two-or-three") (else: "meh")) switch x: case [1]: "one" ;; -> (switch x ([1] "one")) ``` **Also:** special form [`switch`](../specials/compile-switch.md).