[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

(define x)

    Date: Sat, 25 Jun 88 17:46 EDT
    From: Robert Halstead <rhh@VX.LCS.MIT.EDU>

	From: Jonathan A Rees <JAR@AI.AI.MIT.EDU>

	I would hate to see some functionality become available through define
	that was not available through letrec, so I would advise adopting
	(define x) ONLY if letrec is also extended so that
	  (letrec ((x) ...) ...)
	  (letrec ((x <unassigned>) ...) ...).

	For orthogonality's sake, this should also, I believe, require
	  (let ((x) ...) ...)
	to mean
	  (let ((x <unassigned>) ...) ...),
	and similarly for let*, named let (?), and do (??).  Consider this proposed,
	and please talk me out of this madness.

    I would like to support the proposal as a perspicuous way to introduce a
    variable whose purpose in life is to be side-effected.    -Bert Halstead

That's one possible use, but another (unforunately incompatible) use also
presents itself:

This morning I heard a news announcement the Louisiana had passed a law
banning a set of "obscene" words (about five in all, I think) from appearing
on bumper stickers (except in typefaces 1/8 inch high or smaller!).

I suggest that (define <name>) introduce a variable whose purpose in life
should be to -never- be assigned or referenced in any way. That way, when
Louisiana lawmakers figure out what words are inappropriate for use in
programs, they can just DEFINE them away...