Skip to main content

Design

Design Guidelines

  • Avoid the introduction of language idioms that render previous language idioms obsolete.
  • Limit the introduction of "nice-to-have" but otherwise unnecessary language features.

Design Principles

  • Either enforce the rule or remove the restriction.
  • Explicit is preferable to implicit.
  • Hiding complexity behind overloaded language constructs isn't the ideal path to simplicity.
  • Optimize the syntax for the reader, then the writer, and then the tooling.

Design Choices

  • No exceptions (use Result).
  • No implicit type coercion (use explicit type conversion).
  • No import cycles.
  • No nulls (use Maybe).
  • No operator precedence (use parens for expression grouping).
  • No recursive functions (use iteration).
  • No runtime evaluation before main().
  • No silent integer overflow (use wrapping operators).

Design Ramifications