Skip to content
vic

coord-e/expressi

Expression-oriented toy programming language written in Rust

coord-e/expressi.json
{
"createdAt": "2018-08-09T08:50:17Z",
"defaultBranch": "develop",
"description": "Expression-oriented toy programming language written in Rust",
"fullName": "coord-e/expressi",
"homepage": "",
"language": "Rust",
"name": "expressi",
"pushedAt": "2019-03-18T14:40:30Z",
"stargazersCount": 19,
"topics": [
"llvm",
"programming-language"
],
"updatedAt": "2024-02-20T18:14:13Z",
"url": "https://github.com/coord-e/expressi"
}

Build Status codecov

Expression-oriented toy programming language written in Rust

let add = a -> b -> a + b;
let succ = add(1);
let v = succ(succ(succ(1)));
let f = if v == 4 {
a -> succ(a)
} else {
a -> a
};
let x = f(10)

In this example, x is evaluated to 11.

  • Refine errors
    • Property organize error variants
    • Get rid of unwrap completely
    • Point where the cause is
  • Add EvalConstant transformer which calculates compile-time value
  • Implement operators as functions
  • User-defined types
    • Tuple
    • Enum
    • Struct
  • Multi-line input in REPL

Licensed under either of

at your option.

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.