• Re: cloning elements in a list

    From B. Pym@Nobody447095@here-nor-there.org to comp.lang.lisp on Mon Jun 23 19:56:37 2025
    From Newsgroup: comp.lang.lisp

    Coby Beck wrote:

    How to write a lisp function which clones the top-level elements of a list (first arguement) n ( second argument) times. for eg. (clone 'A B C) 4 ) produces ( AAAABBBBCCCC)

    To rewrite your question to what I *think* you mean:
    (clone '(A B C) 4 )
    (A A A A B B B B C C C C)

    try this:
    CL-USER 143 > (defun stretch (list factor)
    (loop for elt in list
    nconc (make-list factor :initial-element elt)))
    STRETCH

    CL-USER 144 > (stretch '(a b c) 4)
    (A A A A B B B B C C C C)

    Gauche Scheme

    (define (stretch the-list n)
    (append-map (cut make-list n <>) the-list))

    (stretch '(a b c) 4)

    (a a a a b b b b c c c c)
    --- Synchronet 3.21d-Linux NewsLink 1.2