Re: Printing an alist of plists with cons format
Heime <[email protected]>
| Newsgroups | gmane.emacs.help |
|---|---|
| Message-ID | <XYUD6X6P89Dl3BuQWVrVf7cG1ALSCqsLyZVHiL0ZnftBJPSjInCvyn7-SstU-4mHdEy057zG7z9WOFf3Lr4ZI0NrqKamoAJ-m8ENwffG82A=@protonmail.com> |
Sent with Proton Mail secure email. On Tuesday, March 24th, 2026 at 12:53 AM, Stéphane Marks <[email protected]> wrote: > 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))))) The difficulty seems to stem from (plist (pop plist)) What should I use instead of pop to get the entire plist value?