Element is a minimal functional programming language. Element code runs using a host which can interpret or compile it to other formats. One of these formats is the bytecode format, LMNTIL (Element Intermediate Language), for use in native and embedded applications.
Content in this repository is currently undergoing large-scale overhaul. Most content conforms to older undocumented conventions or is broken.
- Language Reference Manual - Updated
- Prelude - Updated (untested, no compiler has been updated yet)
- Laboratory (Test Suite) - In progress
- Almost everything else - Working using undocumented previous language version or broken
This is a brief summary, see the Element Reference Manual for full details.
- Single number data type
- Structured types using
- First class functions and local functions
- Intrinsics (math intrinsics, collection intrinsics, control flow)
- Genericity via implicit interfaces with
Element includes a library of core functionality called Prelude.
Element also comes with a Standard Library. New features will generally be implemented as part of the standard library rather than as language features.
- Laboratory - The Element Host Test Suite - .NET Core 2.1 CLI
- Test runner using NUnit containing host compliance tests, prelude tests and standard library tests.
- Can test Element.NET directly or invoke other compilers via CLI convention
- Element.NET - .NET Standard 2.0
- libelement - C++
- Element parser
- Element function evaluation
- AoT compilation to:
- PyElement - Python
- LMNT - C
Command Line Interfaces (CLIs)
- Alchemist - .NET Core 2.1 using Element.NET
- CLI for executing Element via a REPL or compiling to other targets
- Element.Unity - Unity using Element.NET
- Node Graph - allows visualization and modification of Element code using an interactive Node Graph
- Debugger - allows evaluating arbitrary Element code and exploring all of the intermediates in a foldout tree
- Interactive Workspace - allows evaluating arbitrary Element code and displaying immediate intermediates and visualization (Likely to be merged with Debugger in future)
- VSCode Linter - VSCode Extension
- Syntax highlighting for .ele files
- Installation guide:
- Download or clone this repo
- Restart VS Code and enjoy!