‘Iype-Completeness=
as
Demers
James
Donahue
Science
Cornell Ithaca,
~~The problem
of
vonNeumann
Language
Alan
Computer
expressive
a
Department
University New York
languages
Principle
is
14853
that
their
changeable --
have
his
recent
Turing
Lecture,
John
a
trenchant
argument
for
languages
‘programming
the
are
acclaimed
claims
‘Igot
this
to
be
in
inevitable:
of
Algol-like
must
6(J
state
because
it
from
begins
lead
to
less
culties
of
radical
faulty
interpretation
language
design
is
of that
we
the
fundamental
our
design
the
the
our
greater t;on,
results,
effect. we
successors
but
do
that
machines
As
our
evidence
can
cite
the
use
to
Algol
60
and
has
support
difficulties
this of
Pascal.
the
same
@ 1980 ACM
supported
by
National
Both
09791.131 1.7/80/0100.0234”
Science $00,75
only
a great
but
also
on
The fate
In
this
[661
to
develop
ming
languages:
has
claimed
that
improvement
nearly
recent
may
paper,
we
an
all
Ada
on
of
its
design
befall
Pascal.
expand
on
important
an
its suc-
suggests
idea
principle
of of
type-completeness. of
Landin
program-
We Argue
that
this
principle
is
an
effective
tool
understanding
problems
of
programming
language
~ In
type-completeness
particular,
far poai-
1.
building
allows
us
languages
Foundation
to
point
inconsistencies can
2.
know
a
framework
Grant 234
MCS-7901O48.
(or
variation
we
present
of
to
for
their
the
the
flaws
languages
not
language in
many
existing
in mistakes
languages wide
out
what
provides
Below,
work
Hoare
not
Permission to copy without fee all or part of this material is granted thator allthe copies Permission to make digital or hard provided copies of part of this work or ard notor classroom made or use distributed for fee direct commercial personal is granted without provided that copies are advantage, the ACM copyright notice advantage and the title copies not made or distributed for profit or commercial and that of this the notice publication and itson the date and otherwise, nobear and the full citation first appear, page. To copy to tice is togiven copying is by permission of republish, post onthat servers, or to redistribute to lists, requires prior the Association fora fee. Computing Machinery. To copy specific permission and/or or to republish, requires a fee and/ ©otherwise, 1980 ACM 0-89791-011-7…$5.00 or specific permission.
This
what
should
we
ignorance to
Thus ,
not
[73a]
design. limit
just
diffi-
still
principles
efforts;
has
assump-
in guide
11
was
application understand
capture
it
this
tions.
A
to
but
develop-
that sorry
well-designed,
trouble.n the
languages
as difficult
right.
cessors.” ment
little
proposition
predecessors, Backus
so
Backus
extremely
J~Algol
that
have
Backua they
delivered
John
been
proved In
parts
power.n
(s0
repeat)
the
we
and
design
families)
that
changeable
parts.
principle
and
of
of have
type-
completeness
and
design.
We
its
then
ramifications
discuss
incompleteness
some
found
languages.
And
in
we
for
end
common
examples
existing
by
2.
language
For
of
the
the
of
type-complete
it
sion
in
Any
expression
Russell,
which
has
As
we
show,
the
been
designed
by
by
the
flexibility
combination
of
and
assertion
of
provided
a
small,
type-completeness
rich
having
write this
a
the
expres-
type.
can
be
parameterized
with
belie
weakness
any
free
name
having
any
type
a
function
of
implies
that
in
expression
to
yield
an
eveu
complex
type.
Tbie
func-
type must
be
able
to
have
parameters
of
any
Backus~s
of
and
to
produce
results
of
any
type.
vonNeumann
languages.
Probably complete
L.
to
of
in
type inherent
poseible
language
to
tions structure
structure
the
more Russell
type
programming
the authora.
the
ie
the
respect language
in
type 3.
structure
type
language,
Algol-like
presenting
each
the
simplest
language
is
examp 1 e
tbe
typed
of
lambda
a
type-
calculus.
2&Q.e-ComDletenesfi
TO parts,
design
a
is
necessary
it
framework
that
language
with
first
specifies
framework
changeable
the
type
a
grammar:
many
to
how
The
design
the
parts
language
must
of
how
they
may
be
composed.
The
idea
given
is
to
require
that
of
this
of
a
type
structure,
which
uses
of
later
added)
names
(or
what
specifies
kinds
of
a
very
few,
parts
can
rules,
which
uniformly
specify
simple
= BaseType
I FunctionType
= {N,
B,
. . .
]
= Type
+
Type
the
rulee
for
application
and
lambda
abstrac-
be only
composite
expressions
This
framework
covers
the
a
in
the
in
the
applicable language.
composition
following
the
tion, and
the
of
framework
and legal
by
consists
type-
FunctionType consist
calculus
behave
BaseType completenees
lambda
structure
Type and
the
the
typee
entire
and language:
meaningS types say if
of and
that the
composite
expressions
meanings a
of
language
following
their is
three
in
terms
of
components.
~-$omplete
1.
We will if
conditions
the
and
Each
name
bol)
and
a
the
compoeed
or
expression
in
type
of
any
from
the
types
name
or
operator
the
language
composite of
sym-
its
type
of
a
the
has
the
expression
on
the
context
an
appears.
identifier
appears assignment
on
may the
left-
For not or
type
the
type
above,
which
may the
example, depend right-hand
the on
composite
the
operator
without
expressions
types and
regard
of
the
operand
for
are
components of
surrounding
an
com(e.g.,
application)
context,
and
we
can
name
or
type
of
whether side
always
produce
a more
complex
expres-
not
any expression
has
components.
expression in
of
from
sion depend
given
typee
posed
3. The
expression
hold:
identifier
each
type;
is
(i.e.,
lambda
structure
only
2. 1.
Each
of
of free
it
In
fact,
this
an
languages
that
statement.
and 235
constants
higher
type
by
lambda
abstraction
of
identifier.
framework differ that
describes in
are
the
‘?built
choice in~?.
a of
family base
of types
Requiring ensures
two
Firstly,
it
basic
Any
can
be
structed is forms
can
be to
is language If
program.
and
an
argument
to
providing
values
of
a can
because in
X,
the we
the
usable
be
ment
con-
can
parame-
any
program-
parts
same
the
program
do
so
by
slightly
way
of
a
page
for
a
parameter.
Type-completeness
can
always
be
done,
matter
how
semantic
be
used
in
the
define basic
X
forms
of
Type-completeness
in
name
correspondence?!
that
can
by
be
[66]
to
important
point
to
is
sometimes
of
the
rather
also
Landints
, which
than
tions
we of
can
the
that
of
uniform
by
are
capture
language
regard
of
a
for
observation
major
rules
all by
what
a
is
the
the
a
DoD
tain
language
Steelman
clearly
state
one
rule
and
here
is
that
by
gen-
has
been
provided
Euclid.
Placing
bounds
parameters
prevents
be
a
cial
for
points
basic
describing out
‘the
two
as
we
mechanisms
combining
to
forms
below,
forces
the
handle
would
giving
obviously
related
declaration.
and
discuss
also
from
lack
of
introduction
other
the
typeof
cases
where
specommon
suffice.
by
itself
does
not
guaran-
tee
a
useful
the
typed
programming
Even
language.
though
convenlambda
calculus
of
type
is
type-complete,
the
notions,
a
the
serious The
language
its
ruled
yet out
by
many
structure
purposes.
using
naming
framework
suggests
a
design.
Instead
of
features,
we
in
requirements not
for
allows
fault
should
complexity;V8 specifically
us
on
makes
it
unsuit-
named.
requirements.
that
is
than
parame-
type-completeness in
unnecessary
completeness
s%U
semantically naming
few
being
that
simplification of
drawn
parameterization
completeness
able The
be
as
semantics
simplicity without
less
restricting,
and
forms
Moreover,
‘principle
states
Ada
mechanisms,
scope
can
in
one
and
their
declared
declaration
and
equivalent,
by Of
syntactic
better
Type-completeness terization
semantics in
single
Russell,
interpretation,
legal
semantics.
in
adopting
us
declaration
equivalent
that
Thus ,
terms
binding
are
parameter. of
declarations
ensures
parameterization any
and
syntax
happens
allows
parameter/argument
usage;
In
of
program.
type-completeness
all
forms
that
done Secondly,
a
require-
different
described
with
or
different
syntax
be
procedures
meaning.
be
or
observes
slightly
the
text,
eralizing, to
nine
. . .
making
guarantees
no
finds
can
simplicity this
one
contrast,
An X
which
different
of
to
Ada,
with
not
expressions,
in
each
and
of
labels,
shall
parameters
And,
5D exactly,
types,
statements
values
nongenetic
declarations
in
and
as
declaration,
It
functions,
conditions
as
functions.t!
on
‘Procedures,
computable
parame-
constraints
tool
use
be
in
changeable
to
and
parameter.
arguments
for
want
any
any
fundamental
different
parameter,
bound
the
we
a
5D,
exceptions
design.
parameterization
be
and
its
applicable
place
parameters
trization
many
type
not
of
ming
any
that
important
can
ment
type-complete
of
that
name
of
be
universally
are
language.
to
properties
guaranteea
application
ter
language
a
con-
the
type
enrichments
type-
to
require-
add
necessary.
236
structure
should to
new,
However,
novel
underlying
general we
a
language
as
to by
to
its
language
obviously
new
systematic
structure
forms two
of
adding
make
type
combining discuss
idea
approach
designing attempt
the
Below
of
the
only
and when needed
additions
to
structure the
above.
simple
structure
In
measure
allows
a
more
facility
provide
lambda
simple
given
that
to
the
both
of
few
calculus cases,
we
enriching
the
general-purpose than
type
naturally.”
show
disparate
type
to
mechanisms
many
[66, features
be
nothing
more
more
xI!z?x
Structure
in
Name
Enrichments
his
than
of
that
several
languages
weak
these
special
was
discussion
parameters
ever, One
of
the
most
obvious,
but
least
properties
programs
of
refer
be
bound
tainersft
to
turn
cases
out
of
this
noticed
by
Landin
[65,
only
with
to
name
cannot
in
tbe
variable
can
tion
of
a
program.
As
understanding
of
natural
that
the
be be
a
also
type
value evalua-
should
incorporate
languages,
the
of
notion
type
fails
for
like
variable-
procedures.tt
two
How-
reasons:
procedures
not
be
etructure written
of by
it such
of
of
Algol
60
are
Algol,
the
not
legal
‘fpon)
an
not
part
i.e.,
user,
of
they
can-
and
unfortunate
syntax,
property
parameterless
arguments
occurrence
of
‘pn
an
the
procedures
to
as
of
are
procedures
argument
(an
is
taken
as
.
a Were
language
the
Because
fundamental
structure
‘~type
Variable-returning
2.
asso-
during
Algol-like
analogy
behave
parameters.
ncon-
the
are
60
name
program to
changed,
changed
Algol
60
that
variable
variables
the
is
in
but
While
held
our
values,
values.
a
Names
in
Algol
under-
languages
‘variables.!’
not
holding
ciated
Algol-like
of
parameterless the
1. stood,
seems
existing
find
facility.
first
returning,
to
we
features.
P-2 essar
can
And
special-purpose
66]
L.
1581 of
fundamental
The language
pg.
the
analogy
exact,
the
ability
Algol
60
to
pasa
Pro-
‘varicedures
as
arguments
in
would
obviate
the
able.w need Indeed,
all
incorporate they
variables
make
and
their
between
between
assignment
languages
into
distinctions
parameters of
Algol-like
type-completeness
type
and
requires
more
and
right-hand
However,
of
structures:
variable
left-
statements.
partially
our
than
in
languages
is
sides
language
that
basic
such
functions
must
be
able
to
produce
as
variable
results,
unnecessary
[i.e., seem
well
as
being
introduction
mechanisms;
designers
criticisms
are
of
our
contention
artifacts
of
misunderstandings,
properties
of
vonNeumann
spe-
the
not
of
the
the
notion
machines.
failing
to
incorporate
vari-
able
to
variable
the
into
structure
type
makes
it
have necessary
to
introduce
of
to
provide
special
‘composite
formst~
arguments.
This
olin
as
the
Backuata
par-
of ables
is
of
mechanisms
Secondly, ticular,
One
parameter-passing
value
of
call-by-name.
existing
cial
notion
this;
for
suggests
idea
first
(and
possibly
there
judged
one
dangerous),
seems
composition], when
strikes
to
be
however cold,
that
flno
as but
not
as
field are
Lan-
configuration
unpromising will
probably
turn
names
it
it
might
tions,
up
quite
baeic
237
selection part is
and
of
the
possible then
for
no
mechanism
operations If
subscription.
visible to
common
type
write
structure.
like variables i.e.
variable-returning
such
special
forms
any
language
must
are
,
If
funcneeded.
provide
to
The apply
an
operator
to
additional
an
operand This
case.
aspects
of
Algol
returning
is
68,
functions
from
component
application
tion
function
one
of re
treats
them The
not
the
to
the
allows
selectors. does
handle
to of
which but
[vanWijngaarden771 ‘the
suffices
unfortunate
declaration
~?reference-
what
differently
array)
Revised
describe
Report
of
“re
x“
reference-returning
the
X,n
a ‘subnamew
re.
but
of
kind
to
. zero
that
x must
Aside
from
syntactic
have
the
forms,
unnecessary
the
failure
use
to
of
allow
of
of
functions
special
features
necessary
to
to
modify
feature
of
Algol
idea,
forces
the
e.g.,
68,
PL/I
consider
the
or
of
it
assign
zero
to
each
element
To
an
by
this
to
is
of
the
an
procedure
elements
passing
it
a
two-
procedure
the-
operator
x
where
we
‘sub!?
that
{W ~x
T];
assume
i {Y.@ sub [i,il
the
Integer} ~
existence
1 w
of
an
Integer
operator
named
takes
a
type
T variable
and
two
Integer
as
arguments
and
produces
an
Integer
vari-
able
as
a
this
sort
make
the
Obviously,
result.
to
make
full
use
of
is of
flexibility,
it
is
advantageous
to
array
type
itself
a parameter
of
the
pro-
slice!t cedure,
so
the
use
limited
to
arrays
of
the
zeroing
procedure
is
not
This
point
is
illustrate
Russell of
use
diagonal
subscription
of
a single
type.
program discussed
to
could
that
a
‘array
following
the
even
about
as
accessing
Ada.
we
nothing
special
where
the
or
is,
says
(the
introduction
cases
means
it
type
says
variables
the
handle
components,
variables
this
also
different x
instance,
array
indices results
a
parameter
array
only
following
of
the
an
For
M instead
of
dimensional
as
func-
reference
operator
subscription
this
further
below.
array: By
PJZ2Q [x n
eral
sub
allowing
the
combining
functions, much
user
forms a
richer
to
language set
of
to
apply
compose can
any
the
gen-
variable-returning
provide
selectors
of
than
a
smaller
would
be
but allowed
1 by
k!zb -i
:=lQnfixsubi:=O
parameters
‘fxn
to
which
special
of
be
an and
Within
the
dimensional
procedure
modified
produces
a T variable
the
and Integer an
to
infix
when
index
x
access
~~sublt
applied
can
the
a
x,
we
apply
Integer
argument.
actually
provided
the
sub
function
However, to
the
mechanism.
Thus,
by
procedure
a
array could
structure
a
simple
the
has
fewer
user
treatment language
much
features.
both
of
And and
the
of
with
larger
a
language variables,-
a wider
languages
this
we
range with
simplicity
language
to
of many
benefits
designer:
the
user
and
the
onenew
constructs
to
master
components
with
an
type
than
designer of
slice??
type-complete
build
special
like
of
a
flexibility
to
value.
looks one
include
a variable
function
variable
procedure
array;
include
an
Integer
?~array
the
enriching
m The
any
~
knows
that
only
a
few
combining
forms
single will
suffice,
what
should
thus
lessening
his
concern
about
argument well
be
or
should
not
be
added
to
the
a language.
multi-dimensional components
array, would
normally
i.e., be
an
array
extracted
from by
which using
a
This
238
idea
of
using
variable-returning
func-
tions
as
the
structures
means appears
[Reynolda70].
approach
ensures data
equivalent
that
to
will
structure,
regardless
data
make
full
of
approach
as
this
for
68
statically
the
it
seems
necessary
to
parameters.
But
our
types
to
leada
us
to
discussion
the
same
moat
we
can
give
a
name
to
a
type,
to
make
that
name
a parameter.
Data
allow
then
we
must
it
is
possible
in
a
commonplace
to
Ada
design
‘data
type
the
creation
definition
facilities
to
manipulation
of
Recent
work
in
have
(e.g.,
“abstract
complex
programming
data
the
concern
about
design
the
newest
of
languagea,
the
rather
data
complicated
However, of
completeness parts
the
most shows
of
common
in
has
led
such
facili-
e.g.,
their
at
languages
in
that
they
status
type
shows
the
they
are
for Algol
the 68
most
are
the
of
not
interpretation or
Euclid,
of for
new
is
not
even
type
iden-
possible to
respect
Recently, to
to one
CLU,
remedy
this
‘tpolymorphict~
‘!
of
Alphard
oversight;
features
allowed
by
type
parameters
feature,
i.e.,
meaning or
of
Euclid. of
more
fail
to
type-completeness. are
aa
type
(This the
Ada
ambiguous
types
in
gest
the
CLU
viewed
using
as
the
declaration
is
most
a
simple used
obvious
‘tgeneric!~
in
in
feature;
descriptions
[Liakov77]
cores.
treatment
nature
give type
of
and
the
Alphard
only
data
naturally; of
a
type
special
declarations. type
as
the
however, meanings
of
[Wulf78]
the
argument
to
a
no
has
the
sug-
a
parameters.) names
fails
to
notion
of
the
type of
we
themselves
type-complete
parameter, a particular So
construct.
how
constructs in
macro
application
interpreting
demanded
type
have
that
for
difficulty
of
of
we
construct
a meaning
data
treatment parameters
parameterized
a
a
type
meaning Tko
of
same
generalize
type-
accorded.
example,
with
case,
Treating
integral
unfortunate
languages
Thus,
become
is Firstly,
declara-
or
definition
terms
language of
type
meaning.
data
respective
definitions
have
the
characteristics
special
and
21]
to
Euclid
definitions
form
looking
facilities
type
type
[pg.
allow
introduce
program
generality
each
the Alphard,
declarawhich
parameters.
to
attempted
explanation In
ties.
of
methodol-
typean)
the
form
data
Pascal increased
type
it
their
macro-like ogy
performed
result.!?
that
identifiers.
‘?compile-time structures.
Algol
simplify In
and
action
of
languages allow
with
The
declaration,
no
program,
a
type
and
become
sort
be
TvDea
has
only
applies.
(type)
syn-
conclusion:
however, It
the
every
languages
not
these ~.A.
is
the
yielda
do
parametrize able
a macro-like
of
tifiers if
mode
action,
as
rule
for
i.e.,
be
though type-completeness
a
definition,
typed
allow
preceding
this describes
for no
tions legal
this
yielded
except
Also, languages,
which
result
its
treated
But
Report
‘involves
for
are
for
Revised
tion
‘functional
synonym
shorthand.
and
noted
a
declarations
definition
internal
However,
as
tactic
logically
its
taken
type
accepts
any of
3081
is
~tthis
which
accept
advantage
structurer~
notes,
process
structure
data
language
Reynolds
any
[Pg.
complex typeless
the As
representation.tf above,
manipulating
in
GEDANKEN
some
of
could
we
make
have type-
parameters,
as
language.
rule In
In a
identifier
239
means
this of
case, judging
type-completeness the
success
can of
a
serve language
as
design
effort.
Type-completeness
data
type
definition
rules
for
defining
other
‘definition
demands
facility the
should
meaning
facilityn
use
of
in
that the
names
the
same
as
of
ensuring
the
of
TypeDenotation
I ~
TypeDenotation
The
language.
uniformity
~
I OperationSignature
any
Opera benefits
::=
Signature
a
ionSignature
::=
treatment
Id.i.sLwaturel}~
PX.WI { of
data
type
names
are
exactly
those
cited
I for
type-complete
languages:
the
{
of
a program
now
include
and
the
(or
programming
language)
same
duce
other
duce
types.
need
for
the
data
general
sorts
types
of
combining
of
values
the
forms could
be
Id(
for
example,
used
to
pro-
used
to
pro-
there
forms
of
name
is
type
(a
a
because
the
general
would
be
‘parametrized form
types
provide
would
suffice
a richer
Below.
form
we
(and of
of
present
designed
Russell,
the
extensions are
notion
of
only
the
type
Russell
and
basic
of
Russell,
many
siveness
authors
above:
the
specifies
the
whether
a variable
and
is
any
a ~
gives
its
data
denotation,
signature);
i.e.,
a
procedure
function
signature
the
specifies
names
and
of
the
parameters
(and
the
result
sig-
of
a
function);
a
type
signature
specifies
the
names
and
type
comprises.
signatures
of
the
operations
the
remainder
variables
language
the
and
the
the
combining
forms
application
data
of:
and
denotation
abstraction
into
statement
into
a
(both
function
and
to to
turn
a
turn
a
a procedure),
uses
though
2.
conditional
3.
selection
4.
agglomeration,
evaluation,
the
is
more
larger
1.
Russell
language
provides
much
many
of and
Even
framework
In
framework
forms.
Russell
the
of
which
both
into
small,
extensions
than
)
the
[Demers79].
includes
combining is
l;
would
structure
incorporated
framework to
the
suggested
‘typen
1
that
probably
language
structure
both
a few
able
type
we
types
by
OperationSignature
expression).
programming
been
or
having
includes has
l
1 Signature
,
data
functions
most
Id
TypeDenotation
The type-complete
}:
no
nature yield
1
signature
value
signatures types,n
{
simple
a
and special
Signature
language,
expression, Thus,
L
would where
even
Id
interchangeable I m
parts
1
above
amen-
of
a component
of
a data
type,
and
expresto
turn
a
set
of
operations
Algol-like into
a data
type
(as
discussed
below).
languages. In k.
ZhelQf&JJ
Framework
am!ti
each
be Russell gramming
a
language
framework. each
is
Each
operator
“signatureW
type-complete with
a
name
in
symbol in
Russell
or
simple a
Algol-like but
Russell
identifier) terminology,
case,
extremely program has
a
which
pro-
result
rich
signature
(i.e., type, is
given
of
the
following
meaning
or
independently produced of
by any
ponent
denotations.
Russell
is
really
of
a
combining
form
can
of
the
of
the
evaluating
of
the
free
signature the
identifier Thus ,
quite
form
or
appearing the
in
com-
framework
small.
an Nevertheless,
element
the
Ramifications
grammar:
240
the
framework
is
exceedingly
of
rich,
due
above.
to
Of
is
parameters
the of
results
of
Russell
arguments
ideas
we in
fact
functions
any
that
functions
that
and
yield
variables
.
Also,
call-by-name
effect
parameter-passing
using
nullary,
ments,
i.e.,
functions
as
new
notion
a
treated
no
differently
be
part
the is
The
fact
~
(Russell
uses
passing
mechanism
call-by-value
same
parameter/argument
used
to
in
describe
a Russell
The
purely
makes
framework;
the
operations
type
make
themand
that in
operation
data
types
are
happen
(indeed,
an
that
operations
operations
of
of
all
is
many
part
of
a
taste).
in
Russell
the
function
treatment
of
mechanism data
types
signatUre
are
also
correctness
structure
straightforward It
rules,
is
by
determined,
though
Russell
places
nature
of
parameter
tion.
This
detail
in
any
point
is
makes
to
a
on
procedure
discussed
the type-
present
restrictions of
the has
which
simple
no
of manner
consequences.
important
‘signature-matchingW
declarations
the this
this
program.)
possible
of
the
is
signatures
a matter
that
in
several
parameter-
mechanism
meaning
of
their
data
to
into
language
the
language binding
generality
The
Thus,
types
set
of
argu-
.
as
the
the
type.
part
signature
TypeDenotation
of
a
a
as
data
grouping
from
of
types
above.
by
in
decision
type
discussed
data
ordinary
integrated *[]
--
are
to
was
structured
functions
introduced
selves
data
by
as
as
the
selector
agglomeration
cases,
calculus
achieved
meanings,
not
as
Additionally,
include
together
that
lambda be
of
.
Russell
only
as
types
functions
with
their
results.
take
can
value-producing
have
selectors
functions
of
of
produce
as
may
respectively)
type
variables
are
(and
the
can
take
Russell
results
can
field
Thus ,
in
discussed
Russell
and
are
as
the
signature
signature.
types
have
importance
types
arguments)
the
any
Parameterized yield
of
primary
structure
in
some
in
even
the or
much
sigfunc-
greater
also used
in
set
of
the
other
paper
by
the
authors
nature
of
in
this
Proceedings. Russell.
A
operations values; the
that so
set
the
of
to
operations type as
Tn
functions
T (with
Russell an
signature
of of
of the
‘taking
Wallocating that
a the
richness
specify
as and
in
provides
The us
type
signatures
comprises. allows
data
are
is
a
interpretation data
type
is
operations in
meaning
of
such
value
of
a
the a
new
variable
components
of
tYPe
data
as
that
First,
T“
arrays
sees
posed
type
Russell
from
dimensional
signatures
scripted
can
need
leave
commonly
lie not
out
be
give
in
two
(that
to
many
by
the
user
examples.
multi-dimensional
they
can
be
easily
arrays. is,
types
Algol-like
simple
introduce
because
data
Russell
provided
one-dimensional array
of
built
easily
fit.
we in
to
are
they
he
of
unexceptional
possible
languages;
primitive
variable
the
it
features
type
Russell
of the
makes
simply
the
functions
Also,
of
an
array
com-
A that
is
twosub-
as
tix{wT)]
[email protected] and
A sub in funcl_]
~
T
Russell)
can
be
[i,
produced
j] by
first
composing
, applications
241
of
the
Array
type-producing
function
provided,
XC
e.g.,
n {YQ.
Integer}
1 w
Integer
J@ x Array[
==
Integer$New[]
b
IndexType , Array[ In $ exType2,
ComponentType
by
subscription
I 1,
~ X:=n
and
then
redefining
the
result
operator
x of
the
resulting
type
subscription were
operators
would
he
the
of
Thus,
composed.
type
to
the
composition
the
array
user
of
of types
the
q
the that
performs
resulting
that
with
these A sub instead
[i,
functions
A more mi ty sub
i)
sub
j
it
is is
not in
a
matter
Pascal,
tion
operators
the
form
This
same
hut of
of
of
‘syntactic
of
using
the
language
expression
that
shorthand
two-dimensional
also
the
basic
composi-
to
produce
exactly
the
allows
a
subscription
dimensional
array,
user user
naming
data
types.
tions
with
of
structures
New
--
and
interpretation.
allows
1 ike
consequence
conventions
a
In the
be
define
of
in
the
unifor-
Russell
is
that
a
particularly
a
Russell
~~abstractt~
view
of
same
program
signature
and
interchangeably
used
any the in
two
denota-
same
meaning
U
contexts.
for
a
simple
any
two
type
signature
and
the
uniformly
substituted
triangular
denotations
that
have
the
same
a same
logical
properties
can
be
onefor
one
another
in
~
pro-
can
depend
definigram,
tion
of
of
desires.
to
operator
which
that
a natural
fundamental
provides
Thus, mechanism
like
existence
as
can of
have
the
. Russell
This
signatures
Note
j]
of
(A
initialization.
demands
type-completeness
functions
write
with
allocation
and
i.e.,
the
meaning
of
any
program
hand only
on
the
signature
and
meaning
of
a
type
and
matrices. not unlike
Secondly, languages
of
requires
no
which
the
special
interpretation Each
function
New with
other
authors
are
syntactic
for
cation.
all
type
aware,
form
variable
data
Algol-like
or
declaration
in
the
language
on
duced)
Russell
the .
guaranteed
and
gram
declares the
value
can
be
produce in.
of
composed new
For
variablett
variables an
simply
application with
useful
instance,
the
the
type.
a
or
logical
affect
type
the
type that
was
pro-
does
not
properties
meaning
of
is
any
pro-
same
properties
of
Russell
that
provide
signature
a %ew
new
not
to
the
a
fi]wT returns
(how
change
signature
using
The
that
identity
a
its
semantics
provides
So
affect
allo-
typers
the
by
binding
of
any
of
functions the
of
the
New.
type.
This
combining that
are
So
abstract
blur
the
the
language
to
the
language.
function forms
to
built
only
a
one
can
the type
242
of
do
and
what
Each
name Color
on
with how were
data
between
signature
depends
function
treatment
distinction
one
a name
not
this
is name
and
later in
in
signature
produced.
declared
what
a
by
any
allow is
added
by
or Thus ,
a
the
user
is
user
of has
nothing
program
meaning
to
into
program
There Russell
us
built
Russell
a meaning.
a name the
types
that
bound of
to the
Color has
no
way
❑
of
declared;
= -(
Red,
knowing
many
how
other
white,
this
types
Blue
type can
)
evers
happened
be
to
produced
the
same
this
one.
user
whether
signature
and
logical
makes
no
fact,
it
Color
happened
properties
A
more
Pascal-like
to
data
declared
or
was
types
included
provided
as
part
of
types
the
“built
an
implementation
of
Russell.
and
guaranteeing
that
programmer-composed
provide
the
tude
in
implementor
deciding
‘built
inn
may
be
of
built
Booleans
in
and
of
what
parts
implementation-defined
values
he an
behave
Russell
the
with
wishes
to
a
because
Integers,
it or
is
wide
and
in
the
the
implementation
necessary,
provides
efficiencies
unavailable
to
it
necessary
is
is
that
It
in
the
union
To
make
parts
are
allowed
be
Russell
this
means
given
framework; signatures
consistent
with
example,
and the
they
remainder
call-by-value
of
must
that be
mechanism
vided)
The
.
used
particular
semantic
ensure
they
the
the
rich
ensures
within
values
spelled
framework.
For
a data and
to
The
Russell
Report
describes
distinction
for
example.
language
that
allows
be
performed
(as
in
[Hoare73b])
to
be
added
that
data
types.
may
be
declared
this
“systems
necessary like
to
a machine
certain
number
allow
us
words
Russell,
to
and
such
of
obscure
integers.
coercions
can
introduction
the
a
‘very
functional
language;
signature
of
like
to
if
the
ing
in
are the
the
and
obviously they
1 W
w {uWord]
type
tions
of
instance,
‘Type-valued in
that
‘blessW
different
Russell
argument
return
cannot not
be
built
in,
framework
that
as
being
it.
These
written
in
but
there
prevents
of
the
they
are
implementation
Integer of funcRussell is
noth-
a particulanguage
from
high them
if
Simi-
needed.
union the
handling
of
packed
or
machine-
that
can
and records
are
matters
be
variprovided
ables
a
through
simply
dependent type-valued
introduce
=
in
range
recursive and
a
is
behaving
between
of
larly, types
type
In
including leveln
it
functions
the
lar 1.
like
pro-
out the
broad can
more
parameter-
of
a
look
(for
functions
structure
recursive.
whether
must
necessary
are
that
the
new
of
with
language
conditions
implementation-defined language
any
consistency
And
[Demers79]. framework
by
that
type-producing
be
language
functions passing
note
semantically
the
be
to
in
particular
consistent
must
given
independent to
Russell
f~coercionw the
is
union
is
signature
All
word implementation-defined
the
Russell
is
(The
interesting
of
data previously
type
is
signature
“reference”
or
user.
the
type-producing
unions.
reference
introduce that
implementation),
part
time
the
(which
structures
the
programming space
the
a
recursive
this
function
e.g.,
certain
variables
union
build by
the
Something
making
in
introduces
[Demers79].)
3. of
to
of
we
lati-
include
because
type
nonrecursive
allowed same,
implementation.
func-
inw
type By
and
retention
function in
excludes
as uses
above
Russell
the necessitate
be
still
as
difference
to
is
that
tional In
type-checking
preserved.
be
2. have
static
by
a
particular
implementation;
howour
243
remarks
above
about
interchangeability.
from
we
see
that
aside
records
particular
we
~.
program
or or
cannot
are
stored
in
[Backus78] Backus, J. Can the vonNeumann
any
its Algebra 613-641.
reasonably
family
of
Re ferences
efficiencies,
space
arrays
6.
tell,
fashion.
can
expansive
user?s
time
from
whether
Thus,
a
regard
Russell
programming
as
a
some
raises current
These
new the
plexity
of
to
basic
our
of
criticisms
Algol-like
criticisms
“featuresn
compounds
fundamental
structure
languages.
adding
program-
cannot
be
languages;
problems
of
languages.
met
this
the
and
21(1978),
PP.
Donahue. TR79-389, University
Revised Report on Computer Science (1979).
[Hoare73b] Hoar’e, Report Science,
by
Backus~s
claim
that
the
Hints on Programming Symposium on Principles
Languages
(1973),
pp.
Language of Pro-
l-~0.
C.A.R. Recursive Data Structures. STAN-CS-73-400, Department of Computer Stanford University (1973).
simply
size
Instead,
C.A.R. ACM
gramming
and
we must
[Lampson77] Lampson,
com-
situation
either is
Butler,
James
James Mitchell and Programming Language 12:3
accept
QAQi
[Hoare73a]
Backus
ming
programa.
Demers, A. and J. Russell, Report Department, Cornell
languages.
Hoare, Design.
the
of
From
EDemers79]
very
Conclusion%
about
Programming Be Liberated Style? A Functional Style
Horning,
Ralph
G. PoDek. Euclid.
ReDort
London, on
&
SIGPLAN
the
~
(1977).
hope-
[Landin65] less
or
cern
return
to
where
past
This
paper
first
principles
attempts
have
and
try
to
dis-
Landin,
P.J.
60 and 8(1965),
failed.
A
Correspondence
Churchts pp. 89-101,
Lambda 158-165.
between Notation.
Algol G&M
[Landin66] develops
one
such
principle
of
Landin,
P.J.
Languages. language
design
obviates
many
and
shows
that
Backusts
of
its
languages
passing
and
can
criticisms have
declaration
rules
flexibility
in
the
behavior
.
declared
names)
and
allow
families
of
able
languages
partsw.
completenees
[Liskov77] Liskov,
Type-
language to one ture
put
designer
and
must who
constraints. languages to
from
together
who
the
a
is
a then
This much
large
devise
varying
whose
rich
but
forced
to
to
700 PP.
Programming
157-164.
B.,
build
nchange-
role
is
of
nfeaturesn
to
small
type
should
make
design,
but
the Algorithmic Notices 12:5(1977),
its
programming much
and C. in CLU.
564-576.
A.,
et
al.
Revised
Language Algo168. pp. 1-70.
Report
easier
understand.
244
on
S IGPLAN
[Wulf781 Wulf, W., et al. (Preliminary) An Informal Definition of Alphard. CMU-CS-78-105, Department of CarnegieComputer Science, Mellon University, 1978.
struc-
within
pp.
R. Atkinson Mechanisms
the
responsibility
live
20(1977),
[vanWijngaarden77] vanWijngaarden,
typeof
A. Snyder, Abstraction
[Reynolds70] Reynolds, J. GEDANKEN -A Simple Typeless Language Based on the Principle of Completeness Concept. and the Reference w 13(1970), pp. 308-318.
and
on
fundamental
Qi&M
wide
to
focus
number
change
harder
designer
the
one
allowing parameters
widely
Moreover, the
parameter-
(while
with
changes
simple
of
9(1966).
application
Schaffert. complete
Next
The Q@