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?
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.