Subject: Re: macro functionality in embedded languages.
From: (Rob Warnock)
Date: Fri, 06 Apr 2007 06:07:42 -0500
Newsgroups: comp.lang.lisp
Message-ID: <>
Tim Bradshaw <> wrote:
| ...  DTML ...  does do some probably-unneeded optimisation such that
| macros only get recompiled when it knows they might have changed.
| Typically the macros call Lisp functions which then do a lot of
| backquote-based rewriting of the parsed DTML they get passed.
| Previous to DTML I briefly used something which was file-based but
| used sexps.  It used READ and then HTOUT's printing support...

My "LHP" ("Lisp-Handled Pages", as in the example I mentioned
before, <>) does a
similar recompilation/caching, but of essentially pure CL code
[albeit using HTOUT for HTML-generation] rather than DTML or
some other tailored syntax. If the application server is handed
a path suffixed with ".lhp", it checks the modification dates
of the corresponding file and the same file with a FASL suffix
(".x86f" for CMUCL), and only recompiles and/or reloads the file
if the source is newer than the internally-cached copy of the
(compiled) page. [Compilation is done only if there's already
a compiled FASL there, so the user can control which LHP pages
get compiled and which ones only get interpreted.]

Development is *very* fast with this model, since to recompile
recently-edited code you need only hit "Refresh" (or "Reload")
button on your browser...


Rob Warnock			<>
627 26th Avenue			<URL:>
San Mateo, CA 94403		(650)572-2607