[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Typing and semantics [dynamic vs. static typing]
On Dec 15, 2003, at 2:40 PM, Jan-Willem Maessen wrote:
> John Clements <clements@brinckerhoff.org> writes:
>> Based on my conversation with Philippe Meunier, I'm going to refine my
>> argument: My claim is that you can't write down a deterministic
>> operational semantics for Haskell that doesn't involve the result of
>> the type proof.
>
> Correct.
>
>> My further claim is that for other languages, you can.
>
> You'll need to immediately rule out languages like Fortran, Pascal,
> Modula-2, Java, and so forth which permit "+" to mean both "integer
> add" and "floating point add".
No, wait a minute. I'm not excluding semantics that use type
information, just those that use the result of the type proof. That
is, I'm perfectly "happy" with languages that dispatch on the types of
their arguments, just not those that use the "future" information
provided by the type proof.
Let's see if I can be clearer. Suppose I have a Haskell-like language
where the type-checker is oracular; that is, I supply a program, and
the type-checker simply says "yes" or "no". Now, can we write down a
deterministic operational semantics for the user's program? I claim
that you're going to run into trouble disambiguating the various calls
to 'read.'
Are there other programming languages that have this property?
... Now, it may well be that you think this is not a serious problem,
and that it will be very rare for the type-checker to successfully
construct a proof which gives a term a type 'A' when the programmer
intended type 'B'. I feel that this may be a problem, though legions
of Haskell programmers are (even now!) proving me wrong. ...
john