Next: , Previous: , Up: Introduction   [Contents][Index]


1.2 与 C 结合

就像 Shell 一样,Guile 可以可交互式运行(从用户那里读取表达式、调用它们、显示结果),或者像脚本解释器一样运行。Guile 也支持对象库 libguile,它可使其它应用轻松地包含一个完整的 Scheme 翻译器。然后,应用可以使 Guile 作为它的扩展语言、简洁又强大的配置语言或是多功能接口(“glue”)。你可以很容易地让 C 代码调用 Scheme 代码,并给予它完全控制,反之亦然。这样,应用就可以增加新函数、数据类型、控制结构。甚至可以增加 Guile 语法,基于强健语法设计,创造最合适你的语言。

关于 Guile 的设计与历史的四个方面有助于这样的组合。首先是 Guile 的定位一直为扩展语言。所以,C API 十分重要,并因此开发。第二三点是技术上的,Guile 使用保守地垃圾回收机制,并且通过复制和重装 C 堆栈来续行 Scheme 的概念(这可以让你可以把 C 代码放到 Guile 中,就可以运行,而无需写一些奇怪的 Scheme 代码)。最后是模块系统,它可以帮助扩展共存,而不会互相打架。

Guile 模块系统允许模块将大型程序分割通过接口联系的几个部分。模块可能包含解释与编译代码的结合,Guile 可以使用静态或动态链接合并已编译代码。模块还鼓励开发者打包实例程序集进行分发,就像 Guile 一样,你可以找到它的 Emacs 接口、数据库访问示例、编译器、GUI 工具接口、和 HTTP 客户端函数。