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
…