[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
THROW, and MAP
THROW
Excelsior edition's commentary on THROW doesn't make clear whether the
evaluation of the 'result' form is to take place before or after the
tag-search.
If before, then the syntax of THROW is merely that of 'function'. If
after,
then that must be spelled out, so that side-effects in the 'result'
computation
won't occur when there is a tag-search failure.
MAP
All the recent discussion about "what happens if the mapped function
updates
the list it is mapping over" points up the non-primitive nature of the
map
series of "functions". Admittedly, the WhitePages aren't the place to
try to
distinguish a truly-primitive kernel from the common, portable subset,
but
a simple change from [Function] to [Macro] on the map entries would
forclose
a lot misguided babbling.
Given that CommonLisp has RETURN-FROM and named BLOCKs, a macro-
expansion of the mappers need not be concerned with "prog context". Is
there
any reason for continuing to push the primality of the map series over a
reasonable macro definition?
More to the point, sigh, is the lack of any reasonable iteration control
structure.
MacLisp DO just doesn't "cut the mustard". DOTIMES and DOLIST are
too-little,
too-late. LOOP in its current definition (p93) seems to preclude the
nice
MacLisp/LispM LOOP macro. Foo. Having used Interlisp's I.S.OPRS for
some
time now, I often wonder how one can get along without it. The
objection to a reasonable form of LOOP can hardly be that it is "new",
since it is essentially
a modest variant of Interlisp's I.S.OPRS which has had 10-years of
extensive use.
Nor should the objection be that old "cop out" that its syntax isn't
"Lispy"
enough [or, as the last paragraph on page 99 almost says, "... as if
it were
impossible to write programs without
Lots-of-Interminable-Silly-Parentheses"]