https://github.com/microsoft/BosqueLanguage
Основные фичи:
- GC в виде счетчика ссылок, ага
- immutable
- нет циклов, только функциональщина
- дженерики, в том числе variadic
- sum types/adt
- синтаксически, смесь C++, Rust, Swift и OCaml, но страшнее
- optional - часть языка, ака оператор ?
- рекурсия должна быть явно объявлена через ключевое слово recursive
- трансплитер написан на typescript и выплёвывает C++ (но это не точно)
- они ещё используют Z3, но не ясно как именно
Пример:
entity Person {
    field name: String; 
}
function foo(arg?: {f: Int, n?: String} | String | Person): String {
    if(arg == none) {
        return "Blank";
    }
    else {
        return switch(arg) {
            type Record => arg.n ?| "Blank"
            type String => arg
            type Person => arg.name
        };
    }
}
foo()                    //"Blank"
foo(none)                //Type error - none not allowed
foo("Bob")               //Bob
foo(Person@{name="Bob"}) //Bob
foo({f=5})               //"Blank"
foo({f=1, n="Bob"})      //"Bob"
foo({g=1, n="Bob"})      //Type error - Missing f property















