Warning: mysqli::__construct(): (HY000/1203): User howardkn already has more than 'max_user_connections' active connections in D:\Inetpub\vhosts\howardknight.net\al.howardknight.net\includes\artfuncs.php on line 21
Failed to connect to MySQL: (1203) User howardkn already has more than 'max_user_connections' active connections
Warning: mysqli::query(): Couldn't fetch mysqli in D:\Inetpub\vhosts\howardknight.net\al.howardknight.net\index.php on line 66
Article <v92si3$40j1$1@dont-email.me>
Deutsch   English   Français   Italiano  
<v92si3$40j1$1@dont-email.me>

View for Bookmarking (what is this?)
Look up another Usenet article

Path: ...!feeds.phibee-telecom.net!weretis.net!feeder8.news.weretis.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: drop it
Date: Thu, 8 Aug 2024 16:42:46 -0000 (UTC)
Organization: A noiseless patient Spider
Lines: 67
Message-ID: <v92si3$40j1$1@dont-email.me>
MIME-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Injection-Date: Thu, 08 Aug 2024 18:42:47 +0200 (CEST)
Injection-Info: dont-email.me; posting-host="623536926260db1f505ba92f19951445";
	logging-data="131681"; mail-complaints-to="abuse@eternal-september.org";	posting-account="U2FsdGVkX18NThrIjGMSAUy84m+lBsln"
User-Agent: XanaNews/1.18.1.6
Cancel-Lock: sha1:nDf9w5sVNqx7xldo+pO+qISAp8I=
Bytes: 2811


Chris Russell wrote:

> > > > Drop every N'th element from a list.
> > > > Example:
> > > > * (drop '(a b c d e f g h i k) 3)
> > > > (A B D E G H K)
> >
> > > I'm guilty responding to a spammer, who doesn't help Lisp or OCaml by
> > > posting wrong statements about it, so I'll solve your problem:
> >
> > > (defun drop (list n)
> > >   (loop for item in list
> > >         for i = 1 then (1+ i)
> > >         when (/= (mod i n) 0) collect item))
> >
> > > Of course, in Haskell I can write it like this:
> >
> > > myDrop list n=[list!!x|x<-[0..length list-1], mod (1+x) n/=0]
> >
> > > and I'm sure this is not the shortest solution. But for me it is more
> > > difficult to develop pure functional algorithms than using Lisp.
> >
> > It is not that difficult.
> >
> > (defun drop (list n)
> >   (labels ((drop-aux (list i)
> >              (cond ((null list) nil)
> >                    ((= i 1) (drop-aux (rest list) n))
> >                    (t (cons (first list)
> >                             (drop-aux (rest list) (1- i)))))))
> >     (drop-aux list n)))
> >
> > There are many extra points to get for a version using 'Series'.
> > A few extra points for a tail-recursive version.
> >
> > Or you can take this one:
> >
> > (defun every-nth (n)
> >   (let ((i n))
> >     (lambda ()
> >       (prog1 (= i 1)
> >         (decf i)
> >         (when (zerop i)
> >           (setf i n))))))
> >
> > Above returns a function that returns T for every n-th call.
> >
> > (defun drop (list n)
> >   (remove-if (every-nth n) list))
> >
> > --http://lispm.dyndns.org
> 
> Obligatory 1 line solution using map__:
> 
> (defun remove-nth(n list)
>    (mapcan (let ((tick 0))(lambda(x) (when (/= 0 (rem (incf tick) n))
> (list x)))list))

newLISP

(define (remove-nth n lst  , i)
  (clean (fn() (= 0 (mod (++ i) n))) lst))

(remove-nth 3 '(a b c d e f g h i j k))

(a b d e g h j k)