[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
4.2 What is libguile
Libguile is the library which allows C programs to start a Scheme interpreter and execute Scheme code. There are also facilities in libguile to make C data structures available to Scheme, and vice versa.
The interface provided by the libguile C library is somewhat specific to
the implementation of the Scheme interpreter. This low-level libguile
interface is usually referred to as the scm_
interface, since its
public calls (API) all have the scm_
prefix.
There is also a higher-level libguile interface, which is usually
referred to as the gh_
interface (libGuile High). Its public
calls all have the gh_
prefix. The gh_
library interface
is designed to hide the implementation details, thus making it easier to
assimilate and portable to other underlying Scheme implementations.
People extending Guile by adding bindings to C libraries (like OpenGL or
Rx) are encouraged to use the gh_
interface, so their work will
be portable to other Scheme systems. The gh_
interface should be
more stable, because it is simpler.
The scm_
interface is necessary if you want to poke into the
innards of Scheme data structures, or do anything else that is not
offered by the gh_
interface. It is not covered in this
tutorial, but is covered extensively in (guile)Data representation section `Data Representation in Guile' in Guile Reference Manual.
This chapter gives a gentle introduction to the gh_
interface,
presenting some hello world-style programs which I wrote while
teaching myself to use libguile.
The Guile Programmer's Manual gives more examples of programs written using libguile, illustrating diverse applications. You can also consult my Gnudl documentation at http://nis-www.lanl.gov/~rosalia/mydocs/ to see a large scale project that uses C and Scheme code together.