"Type-Completeness" as a Language Principle - ACM Digital Library

21 downloads 0 Views 682KB Size Report
Algol-like languages must lead to this sorry state because it begins from faulty assump- tions. A less radical interpretation of the diffi- culties of language design.
‘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@