This page is part of the web mail archives of SRFI 1 from before July 7th, 2015. The new archives for SRFI 1 contain all messages, not just those from before July 7th, 2015.
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. Best, Will Fitzgerald -----Original Message----- From: Darius Bacon [mailto:darius@xxxxxxxxxxxxx] Sent: Monday, January 11, 1999 2:27 PM To: srfi-1@xxxxxxxxxxxxxxxxx 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: (define parse-signature (lambda (spec) (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. -Darius