Guile

This page describes various bits of software that I have written related to Guile, the GNU Project's Scheme interpreter and extension language toolkit.

.debs for the Nokia 770

All my Guile-related packages for the Nokia 770 Internet Tablet, including source code, are now available from the "guile" project at the Maemo Garage.

Taken together they allow you to write graphical applications for the Nokia 770 in Guile. For an example of this please see count.scm, a program I wrote to help with being a counting agent in the UK local elections of May 2006. As another example, here is a screenshot of another Guile-implemented app displaying some of its own source code. (I don't want to release this app yet, though, as it's not yet useful for anything.)

guile-debugging

guile-debugging is a slightly mixed package that combines The guile-debugging project is hosted on Gna!, so please go there to find out about and/or download the latest release/documentation.

There is also a demo of using guile-debugging to step through some GnuCash code here, but please note that this is a little out of date. (In particular, setting a breakpoint is now much easier, and does not require the incantations shown in the first screen.) There are also some thoughts from long ago when I first started thinking about how the Emacs integration interface might look; these are probably of historical interest only - but if you do think that this original UI was better than what we have since ended up with, please let me know!

guile-gui

guile-gui is some Scheme code that implements a very simple graphical user interface for Guile (using the guile-gtk bindings). It is used as an optional component in Coot.

The latest release is guile-gui-0.2.tar.gz, dated 9th March 2001. Also available is a mini-essay, GUIfying the Guile REPL, which compares the approach taken by guile-gui with that of two other attempts to integrate the Guile REPL with a graphical UI.

Comments, contributions and bug-fixes are welcome.

Key/value database implementations

scm-alist.scm implements a simple database with key/value pairs stored as a `read'-able SCM alist in a file.

hierarchical.scm implements a hierarchically keyed key/value database: it maps a single database with hierarchical keys into a hierarchically arranged set of leaf databases with simpler keys. A key such as "/a/b/c/d/e" is split at a configurable number of components - say 2 - from the leaf end, and interpreted as referencing the key "d/e" in a "leaf" database called "/a/b/c/". Where the leaf database is file-based (e.g. scm-alist.scm), this configurability allows you to balance fast access against having lots of tiny database files that waste disk space.

scm-alist.scm and hierarchical.scm hint at a generic GOOPS-based database interface, of the type suggested in the Guile wish list. If I have time, I would like to look at the real database modules that others have written, and try to implement a generic database interface properly.

backup.scm is a module that implements full or incremental backup of any specified directory subtree to a backup filesystem location (not to physical backup devices). backup.scm stores information about what has been backed up in a hierarchical database provided by scm-alist.scm and hierarchical.scm.

filesys.scm is a module containing some utility filesystem-related functions that are used by the above.

Other stuff that I've temporarily lost track of ...

In other words, it's a long time since I last worked on them and I can't remember exactly what I've released, in what form, with what version numbers, and so on. Drop me a line if you're interested in any of these.



© Neil Jerram 2001, 2006.