Marwood is an embeddable Scheme R7RS implementation, featuring:
And these scheme language features:
The adder example creates a procedure called make-adder
, which given an argument
x returns a procedure that adds its own argument y to x.
This example may be executed with cargo run --example adder
.
Here's the scheme that will execute in the VM given the rust example: ```scheme (define make-adder (lambda (x) (lambda (y) (+ x y)))) (define add-1000 (make-adder 1000))
(add-1000 0)
(add-1000 1)
(add-1000 2)
(add-1000 3)
(add-1000 4)
And the rust code to execute the scheme above in marwood:
rust
let mut vm = Vm::new();
vm.evaltext("(define make-adder (lambda (x) (lambda (y) (+ x y))))") .unwrap(); vm.evaltext("(define add-1000 (make-adder 1000))") .unwrap();
for it in 0..5 { match vm.eval(&list!["add-1000", it]) { Ok(result) => { println!("{} => {}", it, result); assert_eq!(result, cell![1000 + it]) } Err(e) => error!("error: {}", e), } } ```
Licensed under either of Apache License, Version 2.0 or MIT license.