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

"Special Operator" vs "Special Form"

    Date: Sat, 18 May 1985  17:05 EDT
    From: "Scott E. Fahlman" <Fahlman@CMU-CS-C.ARPA>

        Date: 18 May 1985  14:11-EDT

	By the way, apropos of Masinter's comments ... I assume this is what he
	was alluding to about it might have been more appopriate for syntax 
	declarations, as in
	I guess it's a little late to try to make such a change in CL84, much less
	CL86. Maybe CL88...

    I don't understand this at all.  Are you asking for a way for users to
    declare that some user-defined form is a special form?  There aren't
    supposed to be any user-defined special forms.

Sorry, I still get special and macro confused. In my Special Forms paper in
the 1980 lisp conference, I defined macros to be a subset of special forms.
Somewhere along the line, someone has taken it upon himself to change the
terminology and I haven't completely debugged things. Well, (PROCLAIM '(SPECIAL ...))
could still be meaningful, just not useful. I guess I was really thinking
(PROCLAIM '(MACRO ...)), though. In any case, I wasn't meaning to propose
anything; was mostly just making an observation.

I'm glad you agree that precise terminology on these things is important, though,
because that brings me neatly into the other point...

	-- "Special Operator" vs "Special Form" --

	Also, I'd like to replace the term "special form" with "special operator"
	when it doesn't apply to the whole form. ie, COND is not a special form,
	it is a special operator (properly, it's the name of a special operator
	but that's not so critical to me at this point).

    Well, I've already used up my quota of ridicule for the month, so I'll
    just say that this looks to me like nit-picking and I would oppose any
    change to the name of a function in order to remove the alleged
    inconsistency in the nomenclature.  Name changes are always more hassle
    than they should be, so they should only be done when the old name was
    actually confusing people.

My experience with teaching novices is that things work better when important 
terms like these work better when used very consistently, and I really believe
people are probably being confused by this. I consider the issue of consistent
naming to be extremely important during the "formative years" of programmers
learning a new language. I think it sufficiently important to be worth weathering
the hassle of a name-change, though as I said I'm willing to all that name change
to happen in two steps over several years if necessary.