# Tagging --- ## Operators ### Matching ```text r : # x / y { .value {[value] value } .error {[error] `log error; 0 } } ``` ### Asserting If no tag is specified for an operation, `.value` is used An invalid assertion produces an `Error` ```text r : x /.value y r : x / y // same as above ``` ## Coroutines If no tag is specified `.value` is used, user defined coroutines don't have to have a `.value` tag ### Returning ```text co : `{[I64 x; I64 y] `return.value x + y } co : `{[I64 x; I64 y] .value x + y } // same as above co : `{[I64 x; I64 y] x + y } // same as above mu : `{[Bool i] ? i { .int 1 } { .float 1.1 } } ``` ### Matching ```text // using the mu corotuine from above i : # mu `sync `false { .int {[i] i } .float {[f] I64 f } } ``` ### Asserting ```text // using the mu coroutine from aboce i : mu `sync.int `true ``` ## Tables ### Creating ```text table : Table (.a 1; .b 1.1) ``` ### Accessing ```text `log table.a ``` ## Loops ### Break ### Continue