(guile.info.gz) Available Functionality
Info Catalog
(guile.info.gz) Programming Options
(guile.info.gz) Basic Constraints
17.4.1 What Functionality is Already Available?
-----------------------------------------------
Suppose, for the sake of argument, that you would prefer to write your
whole application in Scheme. Then the API available to you consists of:
* standard Scheme
* plus the extensions to standard Scheme provided by Guile in its
core distribution
* plus any additional functionality that you or others have packaged
so that it can be loaded as a Guile Scheme module.
A module in the last category can either be a pure Scheme module --
in other words a collection of utility procedures coded in Scheme -- or
a module that provides a Scheme interface to an extension library coded
in C -- in other words a nice package where someone else has done the
work of wrapping up some useful C code for you. The set of available
modules is growing quickly and already includes such useful examples as
`(gtk gtk)', which makes Gtk+ drawing functions available in Scheme,
and `(database postgres)', which provides SQL access to a Postgres
database.
Given the growing collection of pre-existing modules, it is quite
feasible that your application could be implemented by combining a
selection of these modules together with new application code written in
Scheme.
If this approach is not enough, because the functionality that your
application needs is not already available in this form, and it is
impossible to write the new functionality in Scheme, you will need to
write some C code. If the required function is already available in C
(e.g. in a library), all you need is a little glue to connect it to the
world of Guile. If not, you need both to write the basic code and to
plumb it into Guile.
In either case, two general considerations are important. Firstly,
what is the interface by which the functionality is presented to the
Scheme world? Does the interface consist only of function calls (for
example, a simple drawing interface), or does it need to include
"objects" of some kind that can be passed between C and Scheme and
manipulated by both worlds. Secondly, how does the lifetime and memory
management of objects in the C code relate to the garbage collection
governed approach of Scheme objects? In the case where the basic C
code is not already written, most of the difficulties of memory
management can be avoided by using Guile's C interface features from
the start.
For the full documentation on writing C code for Guile and connecting
existing C code to the Guile world, see REFFIXME.
Info Catalog
(guile.info.gz) Programming Options
(guile.info.gz) Basic Constraints
automatically generated byinfo2html