Skip to content

Open Work

This page records deliberate gaps in the current language. It is not a promise of syntax or a release schedule. The other reference pages describe behavior available in the interpreter today.

Status: design required.

An explicit annotation on an existing binding currently replaces its persistent runtime type contract. A broader annotation can therefore weaken the earlier contract without a distinct operation at the point of change.

The intended direction is to reject implicit contract replacement and require an explicit conversion or rebinding operation. Its syntax, failure behavior, and relationship to annotations remain undecided.

Status: design required.

Functions currently require a final return; early returns inside ordinary function conditionals are not supported. Extending function return flow needs rules for definite assignment and return types across continuing and returning paths. Commit loops deliberately finish through their guards and do not support early exits.

Status: syntax design required.

Nilakan currently infers that a user-defined function is effectful when it calls print, directly or transitively. Such a function can be called only as a statement. This preserves transactional output inside commit loops, but the distinction is not visible in a function definition.

The language needs syntax that distinguishes value-producing functions from effectful procedures without relying solely on whole-program call-graph inference. The declaration and call-site rules remain undecided.