wingosoft

guile-lib

guile-lib is an attempt to provide a repository for useful code written in Guile Scheme. It imposes a taxonomic module hierarchy on the unruly mass of code floating around, and packages it up nicely so that developers can use it and distributors can package it. It's already in Debian.

Development on guile-lib wouldn't happen without arch, a development tool that allows multiple people to work effectively on the same project. I'm not the maintainer of the project, but I can hack on my tree, writing and aggregating new things, moving things around, and in the end there's no conflict. It's a beautiful thing.

Modules I wrote

(container nodal-tree)
A tree consisting of nodes with attributes. Implemented as a tagged alist.
(container delay-tree)
A nodal tree whose fields can be promises created by the delay operator.
(debugging time)
A simple macro to time the execution of an expression.
(scheme documentation)
Some macros to define different kinds of variables with documentation.
(texinfo)
Routines for parsing texinfo files or fragments into an SXML representation.
(texinfo html)
Code to transform stexi, the SXML representation of texinfo, into HTML.
(texinfo indexing)
Code to extract an index from a piece of stexi.
(texinfo nodal-tree)
Code to chunk a stexi document into pieces, suitable for integrating with a custom GtkTreeModel.
(texinfo plain-text)
Code to render stexi as plain text.
(texinfo reflection)
Integrates texinfo into guile's help via (scheme session). See my post on literate programming with guile-lib.
(sxml simple)
Some convenience routines built on top of SSAX.

Modules I packaged

(htmlprag) (source)
A permissive ("pragmatic") HTML parser.
(sxml ssax) (source)
A functional-style XML parser for Scheme.
(sxml xpath) (source)
An implementation of XPath for SXML.
(sxml transform) (source)
A higher-order SXML transformation operator, pre-post-order.
(sxml apply-templates) (source)
A more XSLT-like approach to SXML transformations.
(sxml ssax input-parse)
Oleg's input-parse.scm, but with some routines sped up by use of (ice-9 rdelim).
(debugging assert)
Oleg's assert macro that will print out values of variables referenced in the assert expression.
(statprof)
A statistical profiler for Guile. I hacked on it a bit, though.
(io string)
IO routines dealing with strings, stolen from SLIB.
(scheme session)
The original (ice-9 session), but with some hooks I wrote to make the help system extensible.