do is Coalton’s monadic sequencing form.

Syntax

(do
  clause...)

;; ⟨clause⟩ := ⟨expr⟩
;;           | (⟨var⟩ <- ⟨expr⟩)

Semantics

  • do is surface syntax for sequencing monadic operations.
  • Use <- to bind the result of an action.
  • Ordinary local bindings can also appear inside a do block.
  • Values are usually returned with pure.

Example

(do
  (a <- ax)
  (b <- bx)
  (pure (+ a b)))