perhaps I've missed something ... John Clements (20 Jan 2000 22:21 UTC)
Re: perhaps I've missed something ... Lars Thomas Hansen (20 Jan 2000 22:38 UTC)
Re: perhaps I've missed something ... Shriram Krishnamurthi (20 Jan 2000 22:52 UTC)
Re: perhaps I've missed something ... Lars Thomas Hansen (20 Jan 2000 23:02 UTC)
Re: perhaps I've missed something ... John Clements (20 Jan 2000 22:58 UTC)
Re: perhaps I've missed something ... Lars Thomas Hansen (20 Jan 2000 23:05 UTC)
Re: perhaps I've missed something ... John Clements (20 Jan 2000 23:12 UTC)
Re: perhaps I've missed something ... sperber@xxxxxx (21 Jan 2000 07:38 UTC)
Re: perhaps I've missed something ... Lars Thomas Hansen (20 Jan 2000 22:44 UTC)
Re: perhaps I've missed something ... John Clements (20 Jan 2000 23:09 UTC)
Re: perhaps I've missed something ... Per Bothner (20 Jan 2000 23:01 UTC)
Re: perhaps I've missed something ... Matthias Felleisen (20 Jan 2000 23:18 UTC)
Re: perhaps I've missed something ... Per Bothner (20 Jan 2000 23:55 UTC)
Re: perhaps I've missed something ... Matthias Felleisen (21 Jan 2000 01:04 UTC)
Re: perhaps I've missed something ... Per Bothner (21 Jan 2000 01:49 UTC)
Re: perhaps I've missed something ... Matthias Felleisen (21 Jan 2000 02:40 UTC)
Re: perhaps I've missed something ... thi (21 Jan 2000 09:58 UTC)
Re: perhaps I've missed something ... Per Bothner (21 Jan 2000 18:36 UTC)
Re: perhaps I've missed something ... sperber@xxxxxx (22 Jan 2000 10:32 UTC)
Re: perhaps I've missed something ... Per Bothner (23 Jan 2000 20:02 UTC)
Re: perhaps I've missed something ... Shriram Krishnamurthi (23 Jan 2000 20:50 UTC)
Re: perhaps I've missed something ... Per Bothner (23 Jan 2000 21:25 UTC)
Re: perhaps I've missed something ... sperber@xxxxxx (24 Jan 2000 07:30 UTC)
Re: perhaps I've missed something ... Michael Livshin (24 Jan 2000 16:55 UTC)
Re: perhaps I've missed something ... sperber@xxxxxx (25 Jan 2000 07:43 UTC)
Re: perhaps I've missed something ... Michael Livshin (25 Jan 2000 11:02 UTC)
Re: perhaps I've missed something ... sperber@xxxxxx (25 Jan 2000 11:31 UTC)
Re: perhaps I've missed something ... Matthias Felleisen (25 Jan 2000 13:47 UTC)
Re: perhaps I've missed something ... sperber@xxxxxx (24 Jan 2000 07:29 UTC)
Re: perhaps I've missed something ... John Clements (20 Jan 2000 23:59 UTC)
Re: perhaps I've missed something ... Per Bothner (21 Jan 2000 00:18 UTC)
Re: perhaps I've missed something ... Shriram Krishnamurthi (21 Jan 2000 00:03 UTC)
Re: perhaps I've missed something ... Per Bothner (21 Jan 2000 00:37 UTC)
Re: perhaps I've missed something ... Shriram Krishnamurthi (21 Jan 2000 08:39 UTC)

Re: perhaps I've missed something ... sperber@xxxxxx 22 Jan 2000 10:32 UTC

>>>>> "Per" == Per Bothner <xxxxxx@bothner.com> writes:

Per> The real question is: Does using set! for both variable assignment and
Per> field assignment lead to confusion, programming mistakes,
Per> hard-to-maintain programs, or more difficulty training
Per> programmers?

Definitely.  I just taught this stuff to 250 beginning students last
week, and many had been confused by the obscurity in programming
languages they had learned before.  The prototypical example goes
something like this:

(define x 23)

(define f
  (lambda (x)
    (set! x 42)))

(f x)
x => ?

Alternatively:

(define x (cons 23 #f))

(define f
  (lambda (x)
    (set-car! x 42)))

(f x)
(car x) => ?

Again, SET! has interactions with the meta-level (lexical scoping,
modifies meta-level entities) that data structure mutators don't have.

Students who don't understand the subtleties tend to either avoid
using the associated features altogether, or reason about program
behavior by running the program and looking, rather than understanding
the underlying semantics.

What I fail to see is a good reason *not* to rename the new
construct.  Even Common Lisp has both SETQ and SETF.

--
Cheers =8-} Mike
Friede, Völkerverständigung und überhaupt blabla