3 unstable releases

0.2.1 Mar 21, 2023
0.2.0 Mar 20, 2023
0.1.0 Feb 11, 2023

#586 in Programming languages

22 downloads per month

MIT license

92KB
3K SLoC

crates.io documentation

oris

An interpreter for Monkey

Install

cargo install oris

REPL

$ oris
>> 1 + 1
2
>>

Script

$ cat dt.oris
let answer = 2 * 3 * 7;
print(answer);

$ oris dt.oris
42

Embedded

let code = b"
let is_composite = fn(n) {
    let f = fn(d) {
        if n <= d {
            false
        } else {
            let q = n / d;
            if q * d == n {
                true
            } else {
                f(d + 1)
            }
        }
    }

    f(2)
}

let sum = fn(m) {
    let f = fn(n) {
        if n == m {
            0
        } else {
            if is_composite(n) {
                0
            } else {
                n
            } + f(n + 1)
        }
    };

    f(1)
}

sum(limit)
";

let mut env = oris::Env::builder().with_int("limit", 14).build();

let result = oris::entry(&mut env, code).unwrap();

assert_eq!(result.as_int().unwrap(), 42);

No runtime deps