Just for your fun and horror

Manuel M. T. Chakravarty chak@cse.unsw.edu.au
Sun, 18 Feb 2001 14:50:16 +1100


Jon Fairbairn <jf15@hermes.cam.ac.uk> wrote,

> On Fri, 16 Feb 2001, Scott Turner wrote:
> > Just because the type system of C keeps store implicit, it doesn't
> > change the match between the meaning of 'return' in the two languages.
> 
> Or to put it another way, _all_ types in C are IO
> something.  I think from a didactic point of view making
> this observation could be very valuable.

I absolutely agree.  The Haskell

  foo :: IO Int
  foo  = return 42

and C

  int foo ()
  {
    return 42;
  }

are exactly the same.  It is

  bar = 42

for which C has no corresponding phrase.  So, it is a new
concept, which for the students - not surprisingly - is an
intellectual challenge.

In fact, I think, there is a second lesson in the whole
story, too: Syntax is just...well...syntax.  Students
knowing only one or possibly two related languages, often
cannot distinguish between syntax and semantics.  Breaking
their current, misguided model of programming languages is a
first step for them towards gaining a deeper understanding.

So, `return' is a feature, not a bug.  I guess, the remedy
for the course would be to provoke a discussion of the issue
of C's return versus Haskell's return before the exam.

Cheers,
Manuel