Deutsch   English   Français   Italiano  
<v54l2g$3ai5i$1@jmertens.eternal-september.org>

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

Path: ...!feed.opticnetworks.net!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!jmertens.eternal-september.org!.POSTED!not-for-mail
From: Joerg Mertens <joerg-mertens@t-online.de>
Newsgroups: comp.lang.lisp
Subject: Re: Faster remove-duplicates with sorted list.
Date: Fri, 21 Jun 2024 21:42:07 +0200
Organization: A noiseless patient Spider
Lines: 19
Message-ID: <v54l2g$3ai5i$1@jmertens.eternal-september.org>
References: <v4usrm$21fur$1@dont-email.me> <v4v93u$23sti$1@dont-email.me> <v53k98$349qd$1@jmertens.eternal-september.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Injection-Date: Fri, 21 Jun 2024 21:42:11 +0200 (CEST)
Injection-Info: jmertens.eternal-september.org; posting-host="5fec433df73c4bbd0209172575181d3d";
	logging-data="3492038"; mail-complaints-to="abuse@eternal-september.org";	posting-account="U2FsdGVkX19TGFzb8pGl4loiPHq9Tp+08pby065h2ww="
User-Agent: tin/2.6.2-20221225 ("Pittyvaich") (OpenBSD/7.5 (amd64)) tinews.pl/1.1.61
Cancel-Lock: sha1:oe/GSlD+f1Hi2F1TjZQvMrYHr+E=
Bytes: 1891

Joerg Mertens <joerg-mertens@t-online.de> wrote:

>   (loop for element in list
>         for last-element-key = nil then element-key
>         for element-key = (funcall key element)
>         for result = nil then (funcall test element-key last-element-key)
>         unless result collect element))

This is clearer:

(defun uniquify-sorted-list (list &key (key #'identity) (test #'eql))
  (loop for element in list
        for element-key = (funcall key element)
            and last-element-key = nil then element-key
        for result = nil then (funcall test element-key last-element-key)
        unless result collect element))

I forgot that the loop way to step two clauses in parallel is to
combine them with an `and´.