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