Re: Printing an alist of plists with cons format
Stéphane Marks <[email protected]>
| Newsgroups | gmane.emacs.help |
|---|---|
| Message-ID | <CAN+1Hbq3NY88Dsf-_YgaQj3J5VVx8aK82+GHLdzcdtpP1Qo-Kg@mail.gmail.com> |
On Mon, Mar 23, 2026 at 8:47 AM Heime <[email protected]> wrote: > > Have made a two level plist > > (defvar mpl-length > '(:cm (:10pt 283.46456 :pt 28.34646 :mm 10 :in 0.39370 :ft 0.03281) > :in (:10pt 720 :pt 72 :mm 25.4 :cm 2.54 :ft 0.083333) > :ft (:10pt 8640 :pt 864 :mm 304.8 :cm 30.48 :in 12))) > > And wanted to convert it to a different form: making the top-level plist > into an alist. > > (defun mpl-plist-to-alist (plist) > "Convert a nested two-level plist (:u1 plist1 :u2 plist2 ...) > to a plist nested in an alist '((u1 . plist1) (u2 . plist2) ...)." > > (let (alist) > (while plist > (let ((unit (pop plist)) > (plist (pop plist))) > (push (cons unit plist) alist))) > (nreverse alist))) > > > This gives > > ((:cm :10pt 283.46456 :pt 28.34646 :mm 10 :in 0.3937 :ft 0.03281) > (:in :10pt 720 :pt 72 :mm 25.4 :cm 2.54 :ft 0.083333) > (:ft :10pt 8640 :pt 864 :mm 304.8 :cm 30.48 :in 12)) > That's a list of lists, not really an alist. Try improving the code above to produce this form: ((:cm (:10pt 283.46456 :pt 28.34646 :mm 10 :in 0.3937 :ft 0.03281)) (:in (:10pt 720 :pt 72 :mm 25.4 :cm 2.54 :ft 0.083333)) (:ft (:10pt 8640 :pt 864 :mm 304.8 :cm 30.48 :in 12)))))