3 unstable releases
0.2.1 | Mar 21, 2023 |
---|---|
0.2.0 | Mar 20, 2023 |
0.1.0 | Feb 11, 2023 |
#720 in Programming languages
26 downloads per month
92KB
3K
SLoC
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);