Browse thread
How must we teach lexical scope?
[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ 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" <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