Programming-language Design
For
some years, I have felt a strong interest in defining a new
computer programming language, one that I would find suitable
for most ordinary kinds of
application that don't demand blinding computing speed,
and particularly, suitable to form the programming-language
basis of a programming system with transparent persistency
(also called orthogonal persistency).
I am determined that the language should be purely declarative.
Inspiration
-
K. Kahn and Vijay A. Saraswat:
"Actors as a special case of concurrent constraint (logic) programming"
in SIGPLAN
Notices
, October, 1990.
In this article, Kahn and Saraswat at least partially describe
a programming language they call Janus. See the
Wikipedia article
(mostly by me as of 2009-11).
The Janus language that the Kahn/Saraswat paper describes
includes logical variables that have two aspects, called
the
asker
and the
teller
, that denote, respectively, the right to query the
value of the variable and the right to determine the
value (or something about it).
These rights can be passed around independently of
each other.
-
Magnus Carlsson and Thomas Hallgren:
Fudgets — Purely Functional Processes with Applications to Graphical User Interfaces
, 1998 Ph.D. Thesis.
In their discussion of how it is possible in a purely
functional language to merge unsynchronized streams
of event signals from varous input sources, Carlsson
and Hallgren refer to the concept of an
oracle
, a value passed into the language from the computing
environment, that conceptually magically knows which
event will arrive first. An unlimited supply of
oracles
suffices to merge streams of messages in
the order of the messages' availability, without
breaking referential transparency.
2010-02-03 — Imperatrix Mundi
Although I have thought of starting a development path toward
using a pure functional language without logical variables,
I have
decided for the time being to concentrate on a variant that
would
have logical variables. Since binding a variable to a value
has
sort of an "imperative" flavor, the language can exhibit such a
flavor while nevertheless having a declarative (even
equational)
explanation. To reflect this imperative flavor in a purely
declarative language, I have reached for a name containing
the same root as "imperative", and come up with "Imperatrix
Mundi" from the name of the poem "Fortuna Imperatrix Mundi"
from among the
Carmina Burana
.
-> Current musing