Just for your fun and horror
Fri, 16 Feb 2001 17:57:41 -0600 (CST)
X-Priority: 3 (Normal)
Content-Type: text/plain; charset=us-ascii
Date: Fri, 16 Feb 2001 16:53:13 -0700 (MST)
Organization: Los Alamos National Laboratory
Cc: email@example.com, firstname.lastname@example.org
On 16-Feb-2001 Matthias Felleisen wrote:
> Because imperative languages have named one half of the denotation (the
> value return) and not all of it for a long long long time. It's too late
> for Haskell to change that. -- Matthias
Well now, if I am to understand what a return statement in C does,
I must realize not only that it may return a value to a calling
routine, but also that it preserves the store. If it allowed
the store to vanish, it wouldn't be very useful, would it?
So I don't see how it's reasonable to assert that "return"
means only one of these two things to a C programmer.
Let me spell it out in detail. When a C programmer thinks about the
'return' type of a C function, he thinks about the value-return half
of a return statement's denotation. The other half, the modified store,
remains entirely implicit as far as types are concerned. This is what
Jerzy's exam question was all about.