Deutsch English Français Italiano |
<vb3c1p$1r6la$1@dont-email.me> View for Bookmarking (what is this?) Look up another Usenet article |
Path: ...!news.mixmin.net!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail From: "B. Pym" <Nobody447095@here-nor-there.org> Newsgroups: comp.lang.lisp Subject: Re: cloning elements in a list Date: Mon, 2 Sep 2024 03:39:39 -0000 (UTC) Organization: A noiseless patient Spider Lines: 29 Message-ID: <vb3c1p$1r6la$1@dont-email.me> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Injection-Date: Mon, 02 Sep 2024 05:39:39 +0200 (CEST) Injection-Info: dont-email.me; posting-host="21169b4eafbc5b66ac48973ad23d07f7"; logging-data="1940138"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX18Hz8ZuBdKnFum2YrwdTClz" User-Agent: XanaNews/1.18.1.6 Cancel-Lock: sha1:JsPweKwxTKuWMTl+4W5lxQGxuiY= Bytes: 1567 > > How to write a lisp function which clones the top-level elements of a list > L > > (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 lst factor) (append-map (cut make-list factor <>) lst)) (stretch '(a b c) 3) ===> (a a a b b b c c c)