The transput section of the Revised Report consists in a description
of the transput facilities in the form of near-Algol 68 code, intended
to serve as a precise reference of the intended programming interface
and also of the semantics of the several operations like print
or read
. The same technique is used to describe the standard
prelude.
Consider for example the mode channel
, which part of the
standard transput:
mode channel = struct (proc(ref book)bool reset, set, get, put, bi, compress, reidf, proc bool estab, proc pos max pos, ...)
The fields of values of mode channel
are not supposed to be
accessed by users. In fact, one may imagine a transput implementation
that uses different names for the fields, or a completely different
set of fields. Algol 68, however, doesn’t have secret fields.
In order to denote structure fields that-should-not-be-named, the
authors of the Report resorted to a clever syntactic trick: to precede
the fields names with a metanotion that produces an infinite number of
f
’s, which are obviously impossible to write. Something like:
A) F :: f, F ; F. a) unmentionable field : F tag.
In order to represent the productions of the metanotion F
in
the representation language, they chose the symbol Aleph, since it
represents an alepth-sub-zero number of f
s. Thus the mode
above would be written, using %
for Aleph:
mode channel = struct (proc(ref book)bool % reset, % set, % get, % put, % bi, % compress, % reidf, proc bool % estab, proc pos % max pos, ...)
The WG 2.1, however, didn’t appreciate the joke, and ended using some strange glyph in both Report and Revised Report to represent Aleph.