Skip to content

Design

Here are a number of the core ideas and directives that drive the project. Many of these are not currently implemented, but will hopefully be implemented in the future.

Sub-Pages

  • basics - Discusses the basic elements within the type system.
  • typeTheory - Introduction to the ideas behind the type theory.
  • choice - The ability to write code that abstracts over lower level choices and design decisions and express information joining levels of abstraction.
  • metaprogramming - Discusses support for meta programming.
    • macros - For a strongly typed language, you must either support unsafe features, require duplicate code, or support macros. This describes the macro usage within the language.
    • Language Based Compilation - Move logic from the compiler to the language and library for greater capabilities, faster upgrades, more customization, and ease of use.
    • compilerErrorStatement - Declare error messages from within function definitions themselves.
  • testing - General introduction to the testing philosophy and techniques.
    • arrowTesting - Automatic testing to ensure that overlapping function definitions should have the same result. It makes the use of multiple return values and implicit conversions safe.
    • assertions - Using assertions both for property testing and to declare properties.
  • Context - An additional calling convention for passing data down through the call stack. This can be used for easier while still manageable state management.
  • optimization - Various aspects about performance optimization.
  • syntacticSugar - Various forms of syntactic sugar to add.
  • documentation - Documentation organization.
    • naming - Thoughts on naming and some language specific guidance for good naming.
  • modules - Module and code scoping systems.
  • debugging - Tools for debugging.