|
The LAML home page at the Computer Science WWW server at Aalborg University contains additional and up-to-date information about LAML. The development version of the LAML software home page is also available.
LAML means Lisp Abstracted Markup Language. The main idea behind LAML is to bring XML and HTML into the domain of the Scheme programming language. The LAML tutorial is a good place to start.
You can use the LAML software together with any R4RS or R5RS compliant Scheme system. The Scheme system must, however, support a few compatibility functions that give access to operating system resources. We recommend that you use one of the XHTML mirrors, or one of the existing XML-in-LAML languages we provide. (The HTML4.01 mirror, as well as number of earlier mirrors, are only supported because a number of useful document styles and tools still make use of them).
The LAML distribution also contains the Scheme elucidator (a tool for creation of elucidative programs), SchemeDoc (a system to document Scheme libraries), and the LENO system (a system for creation of web-based teaching materials).
It is also possible to create your own XML-in-LAML language from an XML DTD, using the LAML DTD parser and the LAML mirror generation tool.
LAML can be used for creation of both static WEB pages and for server side CGI programming purposes (via the cgi library). However, the main mission of LAML is to support generation of static web pages via XML.
For installation details, please see the installation section below.
LAML is free software, as defined by the GNU general public licence.
In order to trace the recent developments of the system please consult the page what is new in LAML.
Below follows a structured overview of the LAML software in terms of library interfaces and programmatic descriptions of styles and tools. Notice that all the examples, as referred by the right column, are found in the examples directory of the full version.
Category | Kind | Manual | Examples |
LAML setup | LAML setup | Manual | - |
XML-in-LAML Mirrors and Styles | XHTML1.0 strict | Manual | Examples |
XHTML1.0 transitional | Manual | Examples | |
XHTML1.0 frameset | Manual | Examples | |
XHTML1.1 | Manual | Examples | |
SVG1.1 | Manual | Examples | |
XSL-FO | Manual | Examples | |
LENO Lecture Notes | Manual | Examples | |
The Scheme Elucidator 2 | Manual | Examples | |
LAML Course Plan | Manual | Examples | |
LAML SchemeDoc | Manual | Examples | |
LAML Photo Show | Manual | Examples | |
LAML Chords | Manual | Examples | |
MIDI LAML - MIDI Sequencing in Scheme | Manual | - | |
Older LAML Styles | Questionnaire | Manual | Examples |
Article | Manual | Examples | |
LAML Libraries | Generally useful Scheme functions | Manual | - |
XML-in-LAML common library | Manual | Examples | |
XHTML convenience library | Manual | - | |
SVG extension library - Graph Abstractions | Manual | Examples | |
Time | Manual | - | |
Color | Manual | - | |
Reading and writing of text files | Manual | - | |
Buffered Input Streams | Manual | - | |
Finite state automaton | Manual | - | |
Cgi | Manual | - | |
URL encode and decode | Manual | - | |
Crypt | Manual | - | |
String make-up | Manual | - | |
Scheme pretty printing | Manual | - | |
MzScheme compatibility | Manual | - | |
Tools | The XML-in-LAML mirror generation tool | Manual | Examples |
The Calendar tool - XHTML | Manual | Examples | |
The XML DTD parsing tool | Manual | Examples | |
Bibtex | Manual | Examples | |
XML parsing and pretty printing | Manual | Examples | |
HTML parsing and pretty printing | Manual | Examples | |
The Schemedoc extraction tool | Manual | - | |
Additional Examples | LAML Processing | - | Examples |
The following table shows the existing LAML configurations by Scheme systems, Platform and Operating System, which correspond to the symbols scheme-system, laml-platform, and operating-system in the LAML configuration description.
Note, LAML version 37: I still use MzScheme version 209 on Windows 7 and on Linux.
Scheme System | Applies to | Platform | Operating System | Status | Notes |
mzscheme-300 | mzscheme 300, ..., 370 | windows | Win-7/win2000/Win XP | OK see note | note |
mzscheme-300 | mzscheme 300, ..., 370 | unix/linux | linux | OK see note | note |
drscheme-300 | drscheme | windows | Win XP | OK | note |
mzscheme-200 | mzscheme 200, ... 209 | unix | linux | OK | note |
mzscheme-200 | mzscheme 200, ... 209 | windows | Win7/Win-XP/win2000 | OK | note |
mzscheme-200 | mzscheme 200, ... 209 | unix | osx | ? | note |
mzscheme | mzscheme 103, 101, ... | windows | win2000/Win XP | OK | note |
guile | guile 1.8 | unix | linux | OK | note |
guile | guile 1.8 | Mac | MacOS 10.6.2 | OK | note |
guile | guile 1.6 | unix | linux | OK | note |
guile | guile 1.3, 1.4, 1.6 | unix | solaris-7 and solaris-8 | OK | note |
drscheme | drscheme | windows | win2000/Win XP | OK | note |
scm | scm | unix | solaris-7 and solaris-8 | ? | note |
scm | scm | unix | linux | ? | note |
SISC | SISC | unix | linux | ? | note |
Gambit | Gambit 4.0 | unix | linux | ? | note |
Note as of May, 2011, LAML version 37: MzScheme is the primary Scheme system which I use for LAML. MzScheme 400, and newer versions, deviate a lot from earlier versions of MzScheme. It was difficult to update to MzScheme 400 while still supporting a number of other scheme systems (such as Guile) via the same code base. As a consequence, LAML cannot be used together with MzScheme 400+. Therefore you should download a legacy version of MzScheme (209 or 372) if you want to use LAML together with PLT MzScheme. It is not a problem to install both a legacy version of MzScheme and the Racket system on the same computer.
A bold 'OK' means that I use the combination myself, and that it works for me. An 'OK' means that am confident that the configuration works, and that it is supported in the distribution. (Perhaps I used it earlier, I have tested it to some degree, or others have reported positively on that combination.) When a combination is OK or OK you should be able to install LAML with no or very reasonable efforts (GNU Emacs support included). If you use a combination marked '?' I will not promise anything. In case you use a combination not mentioned above, you should make some porting efforts, and this is more difficult.
LAML does not conform to R6RS on any Scheme system or platform.Although Scheme is basically case insensitive, the LAML software does not rely on this property, and we recommend case sensitive reading. From LAML version 26 we assume that the Scheme reader is case sensitive. The LAML software is written in a case sensitive style, in the sense that a given name, such as xyz is consistently referred to as xyz, not XYZ nor xYz. The SVG mirror requires case sensitive reading of symbols. Guile uses case sensitive reader per default. In MzScheme (read-case-sensitive #t) is used to obtain it. read-case-sensitive is called in the MzScheme compatibility file.
c:\users\kurt\laml> laml fileFrom version 31 of LAML, file should include the laml extension (or a similar extension such as sdoc ). (In earlier versions the file extensions should not be given explicitly). Be sure to insert the laml/bin directory into your PATH. Also, on UNIX, make sure that the command file is executable (chmod 775 laml, for instance). On some platforms we also support the variant
c:\users\kurt\laml> absolute-laml absolute-path filewhere absolute-path is the file path leading to the file and file is the name of the file (with file extension). This variant is, for instance, useful from cron jobs that starts LAML processing at some given point in time. The laml command depends on bin/SETENV.EXE which does not work on NT4.0 and Windows 2000, but it works on Win95/98. Thus, it is currently not possible to use the this mode of activation on Window NT or Windows 2000. The laml command works on Unix.
(define laml-dir "c:/users/kurt/laml/")
(load (string-append laml-dir "laml-init.scm"))This loads the fundamental setup file laml.scm, and as such lib/general.scm, the necessary Scheme compatility file, and - if requested in the your installation file configuration - your laml init file. The XHTML1.0 transitional mirror is also loaded by laml-init.scm, and the LAML startup directory will be set to the LAML root directory.
(laml-cd new-dir )where new-dir can be absolute, relative, or "..". This sets the LAML startup directory, from which all input files are read. The function laml-pwd is also helpful because returns the current LAML startup directory.
(laml "index")The laml procedure takes its input file from the startup directory, as set by the previous step.
A separate guide for use of LAML from DrScheme exists.
If possible, you can arrange that the first two steps are carried out in the init file of your Scheme system.
Please also notice all the other LAML tools that can be activated from this level.
The embed, unembed, split, and unsplit commands are important, because they help the LAML user to embed portions of a string into a Lisp form. Stated in a slightly different way, these commands alleviate the inconvenience caused by the string passing problem (the problem that occurs because all strings must be passed explicitly to LAML functions - this is one of the main points which in a significant way makes LAML different from other similar work).
There also exists a number of more specific emacs command for the Elucidator and LENO.
In case you want to change the key bindings used by Emacs LAML mode, you find most of them in the file emacs-support/laml-key-menu-bindings.el. The keybindings of LENO and the Scheme Elucidator are not in this file, however.
Generated: Monday, November 14, 2011, 08:52:42 |