IronScheme为C#版本的Scheme编译器,通过它可以实现scheme与C#之间的相互调用,scheme编写为库,C#直接调用scheme库函数,这样就可以动态加载scheme代码,完成调用。Scheme也可以调用C#中的库函数或自定义类,具体方法可见官方文档。下面讨论的是C#调用scheme函数。
1. 编写scheme库函数
;Define a function write-ln
(library (rules test)
(import
(rnrs)
(ironscheme clr))
;Define a function write-ln
(define (write-ln fmt . args)
(clr-static-call System.Console WriteLine (clr-cast System.String fmt)
(clr-cast System.Object[]
(list->vector args))))
)
2.通过C#来调用该库函数
var r = "(import (rules test))".Eval();
var r1 = "(write-ln {0} {1} {2})".Eval("{0}-{1}","It's ","me!");
这样就完成了调用,当然可以传递给scheme自定义的对象,这样就可以完成更加复杂的逻辑处理。