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)