Version française
Home     About     Download     Resources     Contact us    

This site is updated infrequently. For up-to-date information, please visit the new OCaml website at

Browse thread
How must we teach lexical scope?
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: -- (:)
From: ls-ocaml-developer-2006@m...
Subject: Re: [Caml-list] How must we teach lexical scope?

"Loup Vaillant" <> writes:

> 2007/3/28, Luc Maranget <>:

>> > 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