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.