Ship

Lexicon · Row

Row

A set of tags — the ingredient of a variant, at kind Row. Wrap it in [ … ] to get an open variant type: [> :a | :b ] (open / lower bound), [ :a | :b ] (exact), [< :a | :b ] (upper bound).

ChannelSpellingRow variable in app code?
Value`[ :a \:b ],[ 'r \:c ],[> :a ]`yes — open 'r ⇒ open-variant Type (open-binder); kind-Row 'r fills [ … ]
Exceptions`exn [ :smtp(E) \… ]`yes — structural exception row
Effects`eff [ Email \Postgres ]`yes at explicit transformation boundaries
  • In the value channel it is a variant row; in the exception channel an exception row (error-row.md). Same shape, different channel.

  • A row variable 'r ranges over rows (kind Row).

  • The eff channel carries effect labels and admits explicit row algebra at bounded transformation boundaries — see effect-row.md.

  • Rows are not the default way to model fixed domains. Use closed variants for ordinary nominal choices; use rows when structural composition is required.

    See variant.md, row-extension.md, and error-row.md.