On this page:
def
let
fun
flow

9 Definitions🔗

syntax

(def id expr)

syntax

(def (id ...) expr)

Identical to Racket’s match-define and match-define-values.
(def a 3)
(def (p q) (values 1 2))
(def [: v vs] [1 2 3])

syntax

(let stx ...)

Identical to Racket’s match-let.

(let ([[: x xs] [1 2 3]])
  x)
(let ([a 3]
      [b 5])
  (displayln (+ a b)))

syntax

(fun name args body ...)

syntax

(fun name [args body ...] ...)

Similar to Racket’s define for function definitions, but also supports specifying multiple arities like Racket’s case-lambda.

(fun do-something (v)
  (abs v))
(fun do-something args
  (length args))
(fun do-something
  [(v) (abs v)]
  [args (length args)])

syntax

(flow name body)

Identical to Qi’s define-flow.

(flow check-number
  (switch
    [(< 0) 'negative]
    [(> 0) 'positive]
    [else 'zero]))
 
(map check-number [1 -2 0])