perm filename PAT.DBA[1,LMM] blob sn#031703 filedate 1973-03-28 generic text, type T, neo UTF8
I looked at PAT.WRU.  Two things (1) If the match fails then nothing
should happen, except that the result is FALSE or whatever.  None of
the assignments that are asked for should appear to have been made,
though of course they may have to be made temporarily in order to
do the match.  For example (Y←$1 $ Y).  Alternatively you could have
two kinds of assignment here, one of which is undone if the match
fails and one which is not.
				 (2) Segment matching does not seem
to be smart enough yet.  You should certainly make the language
powerful enough that the LISP produced sometimes does some search:
though it should be made clear to users that search is indeed being
done, not magic problem solving and constraint massaging.
	Actually 3		 (3) I would like some subroutine
facility.  That is, I would like to be able to name patterns and
kinds of patterns, and to make these definitions recursive if I want
to.  I think Kleene star is not enough.  Example: is FOO a NURDLIST,
which is a list of NURDS, where a NURD is any list of 3, 5 or 7
elements containing either a NURD or the atom "TEITELMAN".  No
parameters so far.  Now is FOO a TWITLIST(3) which is a list of
TWIT(3)s, where a TWIT(x) is any list of 3, 5 or 7 elements
containing either a TWIT or the atom x.  I'd REALLY like x to be able
to get a value in the match, so that
	( ('MASINTER 2 3))	matches	TWITLIST(X←?<some syntax>)
but now everything is getting very languagey which is what you didn't
want to do, but perhaps you should.