To send content items to your account,
please confirm that you agree to abide by our usage policies.
If this is the first time you use this feature, you will be asked to authorise Cambridge Core to connect with your account.
Find out more about sending content to .

To send content to your Kindle, first ensure no-reply@cambridge.org
is added to your Approved Personal Document E-mail List under your Personal Document Settings
on the Manage Your Content and Devices page of your Amazon account. Then enter the ‘name’ part
of your Kindle email address below.
Find out more about sending to your Kindle.

Note you can select to send to either the @free.kindle.com or @kindle.com variations.
‘@free.kindle.com’ emails are free but can only be sent to your device when it is connected to wi-fi.
‘@kindle.com’ emails can be delivered even when you are not connected to wi-fi, but note that service fees apply.

By using this service, you agree that you will only keep articles for personal use, and will not openly distribute them via Dropbox, Google Drive or other file sharing services.
Please confirm that you accept the terms of use.

The Common Gateway Interface (CGI) for generating dynamic documents on web servers
imposes much accidental complexity on the programmer. The Haskell/CGI library documented
in this paper hides all this unpleasantness by using the common sense ‘design pattern’
of separating model and presentation. Low-level query string requests are represented by
association lists, and primitive HTTP responses are easily constructed using a set of HTML
generating combinators. The CGI programmer only needs to write a worker function that
maps an abstract request into an abstract response. A (higher-order) wrapper function then
transmutes the worker into a real low-level CGI script that deals with the exact format of
concrete requests and responses as required by the CGI standard.

Kleisli is a modern data integration system that has made a significant impact on
bioinformatics data integration. This paper contains a brief introduction to the Kleisli system
and an example to illustrate its uses in the bioinformatics arena. The primary query language
provided by Kleisli is called CPL, which is a functional query language whose surface syntax
is based on the comprehension syntax. Kleisli is itself implemented using the functional
language SML. So this paper also describes the influence of functional programming research
that benefits the Kleisli system, especially the less obvious ones at the implementation level.

Availability. Kleisli has been commercialized under the name “KRIS”. It is available from
Kris Technology Inc., 713 Santa Cruz Ave, #2, Menlo Park, CA 94025, USA. Direct email to
info@kris-inc.com and web browser to http://www.kris-inc.com.

The understanding of polymorphic typechecking and type errors is poorly supported by
contemporary functional language implementations. Here, a novel visualisation of functions
and their types is presented based on the generation of function specific icons with graphical
type representations which change dynamically as functions are applied. This visualisation
has been implemented for a Standard ML subset within a graphical environment in which
function combinations are constrained by type matching.

We present a short proof of a folklore result: the Girard translation from the simply typed
lambda calculus to the linear lambda calculus is fully complete. The proof makes use of a notion
of logical predicates for intuitionistic linear logic. While the main result is of independent
interest, this paper can be read as a tutorial on this proof technique for reasoning about
relations between type theories.

We present our experience in implementing a group communication toolkit in Objective
Caml, a dialect of the ML family of programming languages. We compare the toolkit both
quantitatively and qualitatively to a predecessor toolkit which was implemented in C. Our
experience shows that using the high-level abstraction features of ML gives substantial
advantages. Some of these features, such as automatic memory management and message
marshalling, allowed us to concentrate on those pieces of the implementation which required
careful attention in order to achieve good performance. We conclude with a set of suggested
changes to ML implementations.

It is well known that there is an isomorphism between natural deduction derivations and
typed lambda terms. Moreover, normalising these terms corresponds to eliminating cuts in the
equivalent sequent calculus derivations. Several papers have been written on this topic. The
correspondence between sequent calculus derivations and natural deduction derivations is,
however, not a one-one map, which causes some syntactic technicalities. The correspondence
is best explained by two extensionally equivalent type assignment systems for untyped lambda
terms, one corresponding to natural deduction (λN)
and the other to sequent calculus (λL).
These two systems constitute different grammars for generating the same (type assignment
relation for untyped) lambda terms. The second grammar is ambiguous, but the first one is
not. This fact explains the many-one correspondence mentioned above. Moreover, the second
type assignment system has a ‘cut-free’ fragment
(λLcf). This fragment generates exactly
the typeable lambda terms in normal form. The cut elimination theorem becomes a simple
consequence of the fact that typed lambda terms possess a normal form.

Logical frameworks and meta-languages are intended as a common substrate for
representing and implementing a wide variety of logics and formal systems. Their
definition and implementation have been the focus of considerable work over the
last decade. At the heart of this work is a quest for generality: A logical framework
provides a basis for capturing uniformities across deductive systems and support
for implementing particular systems. Similarly a meta-language supports reasoning
about and using languages.

Logical frameworks have been based on a variety of different languages including
higher-order logics, type theories with dependent types, linear logic, and modal logic.
Techniques of representation of logics include higher-order abstract syntax, inductive
definitions or some form of equational or rewriting logic in which substitution is
explicitly encoded.

Examples of systems that implement logical frameworks include Alf, Coq, NuPrl,
HOL, Isabelle, Maude, lambda-Prolog and Twelf. An active area of research in
such systems is the study of automated reasoning techniques. Current work includes
the development of various automated procedures as well as the investigation of
rewriting tools that use reflection or make use of links with systems that already have
sophisticated rewriting systems. Program extraction and optimization are additional
topics of ongoing work.