Whole-Pattern Aliases
This example uses as to inspect a result while keeping the whole value available. The positive function checks the number inside Ok, returns the original result if it is positive, and passes existing errors through unchanged.
Validated with Roc nightly-2026-11-02-847b82c.
positive : Try(I64, [BadNumber, NotPositive]) -> Try(I64, [BadNumber, NotPositive]) positive = |input| match input { Ok(n) as result => if n > 0 { result } else { Err(NotPositive) } Err(_) as result => result } expect positive(Ok(3)) == Ok(3) expect positive(Ok(0)) == Err(NotPositive) expect positive(Err(BadNumber)) == Err(BadNumber)
In Ok(n) as result, n is the number and result is the complete Ok(n) value. This lets us examine part of a value without having to reconstruct the whole thing when returning it.
Output
Run this from the directory that has main.roc in it:
$ roc test main.roc All (3) tests passed in 9.2 ms.