oris
An interpreter for Monkey
text
cargo install oris
```text $ oris
1 + 1 2
```
```text $ cat dt.oris let answer = 2 * 3 * 7; print(answer);
$ oris dt.oris 42 ```
```rust 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();
asserteq!(result.asint().unwrap(), 42); ```