help-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Help with elisp


From: Kevin Rodgers
Subject: Re: Help with elisp
Date: Thu, 31 Jul 2003 09:59:58 -0600
User-agent: Mozilla/5.0 (X11; U; SunOS i86pc; en-US; rv:0.9.4.1) Gecko/20020406 Netscape6/6.2.2

Tom Capey wrote:

* David Chadd <d.chadd@uea.ac.uk> writes:
Having found the string of values (CAO-C Alb2 Hyd) with a regexp
search, I simple-mindedly thought I would be able to do something like

 (setq wits (split-string (match-string 1)))

This does indeed make a list --- (listp wits) returns T --- but the
lists don't behave as I would expect.  For instance, they don't
respond correctly to (set-difference), (intersection) etc.  And for
reasons I can guess at, but don't know enough to do anything about,
the lists are in the form ("CAO-C" "Alb2" "Hyd") rather than (CAO-C
Alb2 Hyd).

  change the test in the set functions from `eq':

(setq a (list "CAO-C" "Alb2" "Hyd")
      b (list "CAO-C" "Alb2" "Hyd" "foo"))

(intersection a b :test 'string-equal)
=> ("Hyd" "Alb2" "CAO-C")

(set-difference b a :test 'string-equal)
=> ("foo")

(set-difference a b :test 'string-equal)
=> nil

Or create a list of symbols (which can be compared with `eq')

instead of strings (which can't):

(setq wits (mapcar 'intern (split-string (match-string 1))))

--
Kevin Rodgers



reply via email to

[Prev in Thread] Current Thread [Next in Thread]