Generated: Thursday, January 26, 2006, 23:38:33 Copyright © 2006, Kurt Nørmark The local LAML software home page

Related Work to LAML

On this page we will describe some work - done in Scheme - which is related to LAML. We will also mention some related work in other languages. In many of the descriptions below we will compare with LAML.


DSSSL is a subset of R4RS Scheme for accessing, transformation, and presentation of SGML documents. SGML is a precursor of XML, and DSSSL therefore corresponds to the role of XSL (the W3C XML language for XML transformation).

Scribe and Skribe

Scribe is system developed by Serano and Gallesio, and it is somewhat related to LAML. Scribe is younger than LAML, and to some degree inspired by LAML. Scribe uses its own document language (in the style of a Latex document with sections and subsections). With this is possible to produce output in several different formats (such as HTML, Postscript or PDF). To put it in another way, Scribe has a number of different backends. In contrast, LAML supports XML, and with this XHTML, SVG, and other XML languages defined by XML DTDs. In addition LAML supports transformations among these. LAML does not support non-XML output formats.

Scribe uses a non-standard Scheme reader for a flexible handling of Strings. As an example the expression (p [a ,(bold "bold") string]) is a paragraph which corresponds to the LAML expression (p "a" (bold "bold") "string"). In contrast LAML uses a standard Scheme reader, and because of that, it is straightforward to use different Scheme systems together with LAML.

Scribe is related to the Scheme system called Bigloo. There is also a version of Scribe which only relies on the Java Virtual Machine.

Skribe representes a closely related predecessor of Scribe.


SXML is an XML format which is represented as an S-expression in Scheme. The SXML format can be used as an authoring format, or it can be produced by a parser. As an accompanying resource, SXSLT is a Scheme transformation framework for SXML document. SXSLT is based on pattern matching and replacement.

SXML is conceptually comparable with the internal XML AST data structures in LAML. The ASTs in LAML are not intended as an authoring format. The XML mirror functions produce ASTs, and a number of functions in the common, language independent XML-in-LAML library access constituents of the ASTs.

LAML is able to use the SXML format as internal AST representation. This was made - in close dialogue with Kirill Lisovsky - in order to attempt some bridge building between LAML ans SXML.


WebIt is an XML framework for Scheme made by Jim Bender. WebIt relies on SXML, described above. WebIt provides macros for definition of XML elements and XML attributes. XML elements defined with WebIt provide for (some amount of) built in validation. It is possible to compile an XML Schema to a set of WebIt element and attribute definitions. Transformation from one XML language to another is supported by syntax-rule-like macros. WebIt comes with an embedding of CSS in Scheme.

WebIt is in many respects quite similar to LAML. LAML generates library of Scheme functions from XML DTDs, whereas WebIt is able to generate similar libraries form XML Schemas. LAML is based almost entirely on functions, wheres WebIt relies a lot on macros. WebIt seems to be supported by PLT Scheme. LAML is intended to be independent of particular Scheme systems.


BRL means Beatiful Report Language. BRL is designed for server-side web application, and it is in particular strong with respect to access of databases via SQL. BRL is similar to server page systems such as ASP and PHP, with the difference, of course, that BRL uses Scheme as the programming language. In a similar way as Scribe, BRL uses a non-standard Scheme reader.

In constrast, LAML relies on CGI for server-side programming, via use of a relatively simple CGI Scheme library.

The BRL version on Sourceforge is based on Java servlets and it uses the Kawa Scheme compiler.


Latte is mixture of the Latex text formatting system and Scheme, at least at the conceptual level. In Latte, the author uses a Latex-like markup style. Most interesting, however, Latte supports a Scheme-like language in TeX syntax.

Non-Scheme work

A substantial amount of related work has been done in Haskell. The main orientation of this body of work is document validation via extended static type checking. Wallace and Runciman's HaXml system represents early work (1999). Erik Meijer and colleagues have also made several contributions (XMlambda and server-side web programming). Peter Thiemann has made the WASH system. XDuce is a special-purpose functional language for XML processing. The non-functional languages Curl, Bigwig, and JWIG do also represent related work.

Kurt Nørmark