caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: ls-ocaml-developer-2006@m-e-leypold.de
To: caml-list@yquem.inria.fr
Subject: Re: [Caml-list] How must we teach lexical scope?
Date: Wed, 28 Mar 2007 17:43:51 +0200	[thread overview]
Message-ID: <tbhcs5tlu0.fsf@hod.lan.m-e-leypold.de> (raw)
In-Reply-To: <6f9f8f4a0703280734p49ed0b7fk48787a8ba3a76e9e@mail.gmail.com> (Loup Vaillant's message of "Wed, 28 Mar 2007 16:34:31 +0200")


"Loup Vaillant" <loup.vaillant@gmail.com> writes:

> 2007/3/28, Luc Maranget <luc.maranget@inria.fr>:

>> > So here are a few questions:
>> > -> Is lexical scope that important when learning pure functional
>> > programming?
>> > -> Are environments helpful (even the slightest bit) when teaching
>> > lexical scope?
>> > -> Where does this idea come from? I have not read a single book, as
>> > single article nor blog talking about environments.
>> > -> How can we teach lexical scope? Is there a simple solution, the
>> > kind of a first year student can understand in less than an hour?
>>
>> An attempt to answer your question 1.
>
> OK, It was about the implementation of first class function in a
> Pascal like language.
>
> Personally, I think environments are about the implementation of
> lexical scope, not  its specifications. Therefore, teaching them in
> the first year of a programming course is premature. I may be wrong,
> so I am trying to verify that.

Personally I think you're wrong here. Environments (as mapping from
identifier to values) represent the context in which a given
expression must be read and interpreted (in both senses). I cannot
imagine a way to do so precisely without using a similar
abstraction. With horror I remember some learn-to-program books I read
in my youth and which tried to talk about scope by talking about
wether a identifier is "valid" or something like this:
horrible. Talking about free variables and environments on the other
side makes it very easy to see which parts of an expression must get
"meaning" by being interpreted in some context (environment). I find
that rather useful.

Grasping the idea of a free variable (perhaps in an informal way) and
applying the ideas of environment(s) should take a reasonably bright
student hardly more than an hour (but I might be wrong).

Concerning your

> I don't understand the way were are taught lexical scope. Our
> professors used "environments", where free variable would suffice.
> (An environment is the set of defined values at a given time. The
> environment of a value is the environment of when this value is
> defined.)

-- I'd say that environment and free variables are "dual" or
complementary concepts. One is not useful without the other.

>From what you write, I'm not sure, the course (at Tolouse 3) you've
been talking about is just badly structured, wether the problem is at
yours or your brothers side or wether (I suggest to consider that) not
all students are as bright as you or your brother and therefore things
can get a bit repetitive. On the other side

> -> Where does this idea come from? I have not read a single book, as
> single article nor blog talking about environments.

I wonder that you have not heard about environments before. Perhaps
it's not your part yet to improve teaching in that area
:-). Nonetheless: If you have a suggestion how to talk about lexical
scope or the "meaning" of an expression without resorting to
environments, I'd be interested to hear more about it.

Regards -- Markus


  reply	other threads:[~2007-03-28 15:37 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-03-28  7:59 Loup Vaillant
2007-03-28  8:49 ` [Caml-list] " Luc Maranget
2007-03-28 14:34   ` Loup Vaillant
2007-03-28 15:43     ` ls-ocaml-developer-2006 [this message]
2007-03-28 17:09       ` Loup Vaillant
2007-03-28 19:24         ` ls-ocaml-developer-2006
2007-03-29  8:17           ` Loup Vaillant
2007-03-29 10:59             ` ls-ocaml-developer-2006
2007-03-28  9:49 ` Pierre-Evariste Dagand
2007-03-28 17:41 ` Pal-Kristian Engstad

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=tbhcs5tlu0.fsf@hod.lan.m-e-leypold.de \
    --to=ls-ocaml-developer-2006@m-e-leypold.de \
    --cc=caml-list@yquem.inria.fr \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).