[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
RE: Will Fitzgerald <fitzgerald@xxxxxxxxxxxx>
Here's another use of list-difference/ldiff, which is very similar to the
parse-signature example of Darius Bacon.
I'm working on a revision of the RAP System, a language for task execution, and
doing big parts of this in Scheme. A RAP index has the form:
(name in-var* [=> out-var*])
It's useful to have a list of just the name and in-vars, and:
(LIST-DIFFERENCE index (memq '=> index))
does just this.
Other examples I've seen of using LDIFF/LIST-DIFFERENCE tend to be for parsing
key word-like lists.
From: Darius Bacon [mailto:darius@xxxxxxxxxxxxx]
Sent: Monday, January 11, 1999 2:27 PM
Subject: Re: Will Fitzgerald <fitzgerald@xxxxxxxxxxxx>
> Michael Sperber <sperber@xxxxxxxxxxxxxxxxxxxxxxxxxxx> writes:
> >>>>>> "Will" == Will Fitzgerald <fitzgerald@xxxxxxxxxxxx> writes:
> >Will> May I suggest the following addition to the SRFI-1 list library,
> >Will> Common Lisp's LDIFF:
> >Will> I think a reasonable definition is:
> >Will> [...]
> >Could you suggest possible uses for this procedure?
Here's a fairly trivial use taken from a real program:
(let* ((mid (memq '- spec))
(in (list-difference spec mid))
(out (cdr mid)))
(make-signature in out))))
And here's another:
(define (butlast L)
(list-difference L (last-pair L)))
But groveling through my source directories reveals fewer instances of
list-difference than I expected.