Just for your fun and horror

Matthias Felleisen matthias@rice.edu
Fri, 16 Feb 2001 17:57:41 -0600 (CST)

   From: jhf@lanl.gov
   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: karczma@info.unicaen.fr, haskell-cafe@haskell.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. 

-- Matthias