Re: getting list of keys

Liste des GroupesRevenir à cl lisp 
Sujet : Re: getting list of keys
De : Nobody447095 (at) *nospam* here-nor-there.org (B. Pym)
Groupes : comp.lang.lisp comp.lang.scheme
Date : 31. Aug 2024, 01:02:36
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <vatj2b$m815$1@dont-email.me>
References : 1
User-Agent : XanaNews/1.18.1.6
B. Pym wrote:

an `update' function for the mp3 database.
I need a function for doing something like this with a list:
 
* (xxxx (list :artist "something" :song "sss"))
=> (:artist :song)
 
Thanks in advance, and sorry for my bad english.
--
Pablo.
 
CL-USER> (loop :for (x y) :on (list :artist "something" :song "sss") :by #'cddr
            :collect x)
(:ARTIST :SONG)
 
Gauche Scheme and Racket using unfold from SRFI-1.
 
(use srfi-1)  ;; unfold for Gauche
  or
(require srfi/1)  ;; unfold for Racket
 
(unfold null? car cddr '(:artist "something" :song "sss"))
  ===>
(:artist :song)

Rob Warnock wrote:

The one place I find myself frequently using CDD*R
is in destructuring lists by "gulps" in LOOP, e.g.:
 
    > (defun group-by-triples (list)
        (loop for (a b c) on list by #'cdddr
          collect (list a b c)))
 
    GROUP-BY-TRIPLES
    > (group-by-triples '(0 1 2 3 4 5 6 7 8 9 10 11 12))
 
    ((0 1 2) (3 4 5) (6 7 8) (9 10 11) (12 NIL NIL))

Gauche Scheme

(use srfi-1) ;; unfold

"take*" and "drop*" are tolerant; they don't raise an
exception when the list is too short.

(define (group-by-triples xs)
  (unfold null? (cut  take* <> 3 #t) (cut  drop* <> 3) xs))

(group-by-triples (iota 13))
  ===>
((0 1 2) (3 4 5) (6 7 8) (9 10 11) (12 #f #f))

Date Sujet#  Auteur
31 Aug 24 * Re: getting list of keys2B. Pym
31 Aug 24 `- Re: getting list of keys1B. Pym

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal