OxL Reference

op |

|

Defined in

Examples

oxl
operator <|> <T>(a: Parser<T>, b: Parser<T>) -> Parser<T>  infixl 3 => a.orElse(b)
operator ~~ (s: str, re: Regex) -> bool                      infix 4 => re.matches(s)
operator ^^ (a: f64, b: f64) -> f64                          infixr 12 => a.pow(b)
operator ¬ (b: Bits) -> Bits                                prefix => b.invert()

— 5.3 Overloading and user-defined operators

oxl
@error data NotFound { what: str }
@error enum PayError { Declined(reason: str), Fraud }

fn charge(card: Card, sum: Money) -> Receipt | PayError | NetError  net {
  let token = Vault.tokenize(card)?          // ? propagates the errors of the call
  if sum <= Money.zero() { fail PayError.Declined("zero sum") }
  Bank.pay(token, sum)
}

— 6.5 Errors

Related diagnostics

chained-comparison, not-callable, not-overloadable, operator-decl, range-not-iterable, invalid-char, task-reuse, fail-type, question-context, unhandled-error, type-mismatch

See also