解决方法
计划在我看来是一个很好的嵌入式语言,因为它是灵活的而不是太blo肿。 Gambit-C对于这一点特别好,因为它允许您同时运行解释的脚本,也可以将代码编译为C.在我的测试中,Gambit-C生成的C代码只比手写C慢一些(例如,在C中运行0.030s的特定测试在Gambit中为0.040)。 Gambit还有一个非常好的FFI(外部函数接口),它本质上只是用于将绑定写入C库的特殊语法的Scheme(也直接支持ObjC和C)。 Gambit也有一个非常好的回复与一些调试功能。
Guile也相当不错,实际上比Lua(速度最快的解释语言,我现在知道的 – Guile近年来取得了很大的进步)。但是由于Gambit-C可以编译成真正快速的代码,所以我通常不会使用Guile,除非我打算在最终版本中使用解释代码。
Lua已经关闭了,但是你不会像Scheme那样得到延续,你也不会得到宏。尽管如此,仍然可以做一些合理的功能。它不会有一个完全功能的对象系统(如CL中的CLOS),但它确实有表,它们可以很容易地用于实现基于类的继承和基于原型的继承。此外,Lua还有一个优秀的C API,真的很高兴与您合作。它是基于堆栈的,并且设计的方式,你不必担心内存管理的Lua方面。 API非常清晰,组织良好,并且有很多很好的文档和示例代码。 Lua不能编译,但它确实使用字节码(总是 – 当您向Lua VM发送代码时,它始终先将该代码编译成字节码,然后运行)。
现在,对于Common Lisp来说,我觉得这可能不是一个很好的嵌入语言。这样做的原因只是CL很大。一般来说,嵌入一个轻量级的语言是理想的,因为它将使用您提供给它的平台/ libs,而不是外部的东西。
所以,我认为你不能错过Gambit-C,Guile或Lua。他们都会很好CL是强大的,但我只是认为它对于嵌入来说太大了。