.Re: Inverting alists -- *NOT* a homework assignment!!
10 views
Skip to first unread message
Robert L.
unread,
Apr 1, 2022, 3:42:25 PM4/1/22
Delete
You do not have permission to delete messages in this group
Copy link
Report message
Sign in to report message
Show original message
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to
Christopher N. Vogt wrote:
> > ;; Hi. I would like to invert an alist of the form ;; ;; ((reference-1
> > referent-a referent-b...) (reference-2 referent-c ...)...) ;; ;; to
> > another alist of the form ;; ;; ((referent-a reference-1) (referent-b
> > reference-1) ;; (referent-c reference-2) ...) ;; ;; I have gotten
> > something to work but it's so stupefyingly *UGLY* that I ;; just know
> > someone out there can demonstrate a more better beautiful ;; elegant
> > means of achieving the same result. ;; ;; [ I'm working in emacs-lisp
> > with the 'cl' package, so the code below ;; ought to be reasonably close
> > to Common Lisp...] ;; ;; ;; Mind you, I am teaching myself lisp and THIS
....
> I'd do it something like this:
> (defun invert-alist (alist)
> (loop for list in test
> for reference = (first list)
> appending (loop for referent in (cdr list)
> collect (list referent reference))))