Log of changes on this site
August 2001 through July 2002
Please refer to ChangeLog.html for the most recent changes
July 4, 2002
June 7, 2002
May 5, 2002
A new web page about Low- and high-level macro
programming in Scheme:
- Systematic Macro programming
- Two pitfalls in programming nested R5RS macros
- Syntax-rule-level
??!lambda
and ??!apply
- Lambda-calculator as a R5RS macro
April 5, 2002
March 1, 2002
- New edition of the SXML
specification. Besides stylistic changes and updates caused by the
new version of the XML Infoset, the new edition introduces a
@@
node for extensibility and specifies the SXML grammar in a more
precise (and also in a more abstract, see SXML.scm) way. We also
introduce a non-terminal namespace-id, and rename user-ns-prefix into
user-ns-shortcut. We explain how the latter differs from XML namespace
prefixes.
- An article `Similarity between instruction scheduling and imperative functional programming'
is related to Andrew W. Appel's paper on Single Static
Assignment.
- An article
demonstrating that Scheme/CL macro-expansion models the non-strict
computation of Haskell functions.
February 1, 2002
- Added a reference to a PADL02 presentation
"A better XML parser through functional programming," which describes
the derivation of the SSAX API.
- Added more
References and Footnotes on
Subtyping, Subclassing, and Trouble with OOP.
January 4, 2002
December 7, 2001
November 4, 2001
- SXML specification is
presented better. The specification is written in SXML itself,
which is later transformed to HTML, LaTeX and PostScript. It is
available in all these formats.
- Version 4.9 of the SSAX XML parser.
The new version is smarter about insignificant white space. A
benchmark comparing SSAX and Expat in performance is also included.
- An
assert
macro with informative reports on failure
- A serially-numbering monad
October 5, 2001
A new set of web pages about programming in Haskell:
- Provably perfect shuffling and its pure functional implementations
- Similarity between instruction scheduling and imperative functional programming
- Number-parameterized types and static computations in Haskell
- Categorical products in Haskell
- How to implement
AND
without pattern-matching
September 7, 2001
- Version 4.8 of the SSAX XML parser.
The new version is roughly 10% faster than the previous one, and
allocates half as much memory. It is easier to port; it works on
more Scheme systems.
- ssax.sourceforge.net
SSAX/SXML is also a project at SourceForge. SourceForge
graciously provides mailing lists, forums, bug and feature request
tracking systems. The SSAX CVS repository at SourceForge
includes several sample SSAX applications and usable examples.
- The description of input stream
parsing library is converted to SXML. The master file is parsing.scm.
Added two pieces of sample code: to remove HTML/XML tags and comments
from an input stream, and to count the number of occurrences of a string
pattern in a file.
August 5, 2001
- Object-Oriented programming is a harmful methodology: a paper and especially a talk presented at
Monterey 2001 workshop. Behavioral inheritance, one of the planks of
OOP, is most troublesome. Behavior overriding is responsible for
breaking separation between an interface and implementation. Behavior
overriding inflates statement's context, which makes it difficult for
a programmer to keep all the context in his short-term memory. As the
paper shows, thinking that everything is an object (with its own
reactive behavior) may lead to suboptimal solutions.
- The Input parsing module, other
Scheme utilities documented on this site, and the Functional XML parsing framework
now work on MIT Scheme, Release 7.5.2. The only change is the addition of
a MIT-specific version of the standard prelude.
- Stream tokenizers now
rely on a dedicated function for initial buffer allocation. The
default policy is reusing a statically allocated buffer. This policy is
optimal for Scheme systems without preemptive multi-threading and
without shared substrings. The policy dramatically reduces the amount
of garbage produced during, for example, parsing of large XML files.
- Higher-level i/o
procedures --
write-substring
,
port-copy
-- with a highly efficient fast path code.
continues in a separate document, ChangeLog-5.html
continues in a separate document, ChangeLog-0.html