Subject: Re: I don't understand Lisp
From: Erik Naggum <>
Date: 1998/09/24
Newsgroups: comp.lang.lisp
Message-ID: <>

* Russell Senior <>
| I have adapted Erik's code to a slightly different interface that I find
| more useful.  It takes only a single sequence element for a delimiter,
| rather than the &rest arguments of Erik's function.  Also, it provides a
| switch to optionally aggregate adjacent delimiter instances.  Also, it
| returns the values as a list of subsequences, rather than a multi-value
| return.

  that's pretty amusing -- the first few versions of this function did
  indeed take a list of delimiters and return a list of values.  however, I
  have come to prefer multiple values to lists of values -- they are easier
  to deal with when binding the result to variables, and especially when
  just using the first value, which I found that I did quite often.  I also
  prefer to use APPLY when I already have a sequence, and when I was only
  hacking out the first element of a delimited string, the list-as-argument
  model became cumbersome.

  I'd have implemented COLLAPSE with (delete "" substrings :test #'equal)
  before reversing the list, and certainly made it optional once you make
  the delimiters a list of its own.  I agree that this flag is useful.