λ Marwood   ![License Badge] ![Test Badge] ![Deploy Badge]

Marwood is an embeddable Scheme R7RS implementation, featuring:

And these scheme language features:

Example

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), } } ```

License

Licensed under either of Apache License, Version 2.0 or MIT license.