DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH
 

(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