Deutsch English Français Italiano |
<20240912051355.168@kylheku.com> View for Bookmarking (what is this?) Look up another Usenet article |
Path: ...!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail From: Kaz Kylheku <643-408-1753@kylheku.com> Newsgroups: comp.lang.lisp,comp.lang.scheme Subject: Re: Another code review perhaps? Date: Thu, 12 Sep 2024 12:22:24 -0000 (UTC) Organization: A noiseless patient Spider Lines: 64 Message-ID: <20240912051355.168@kylheku.com> References: <vbuba3$68dk$1@dont-email.me> Injection-Date: Thu, 12 Sep 2024 14:22:24 +0200 (CEST) Injection-Info: dont-email.me; posting-host="fc240c90c706e031471363b92b2225a2"; logging-data="270113"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1/A+ZGG7qbH18lEm7w3yeNr/hXvn9BRdEU=" User-Agent: slrn/pre1.0.4-9 (Linux) Cancel-Lock: sha1:hfbmZj0Yy+LRXc9myX03csW3d/E= Bytes: 2279 On 2024-09-12, B. Pym <Nobody447095@here-nor-there.org> wrote: > Arthur Lemmens wrote: > >> > Define iterative and recursive versions of a function that takes an >> > object x and a vector v, and returns a list of all the objects that >> > immediately precede x in v. >> >> Graham doesn't like LOOP, but I do. So here's a LOOP-version: >> >> (defun precedes (object vector) >> (loop for x across vector >> and i from 0 >> when (and (equal x object) (> i 0)) >> collect (elt vector (1-i)))) > > > Look at that: > > (1-i) > > Don't you think that that should be: > > (1- i) > > or > > (- i 1) > > ? > > It's shorter when you use a Lispy language instead of CL. > > Gauche Scheme > > (use srfi-42) ; list-ec > > (define (precedes obj vec) > (list-ec (: x (index i) vec) > (if (and (> i 0) (equal? x obj))) > (ref vec (- i 1)))) > > (precedes 5 #(5 0 4 5 8 9 5)) > ===> > (4 9) > > Another way: > > (define (precedes o v) > (let ((l (vector->list vec))) > (filter-map > (^(a b) (and (equal? o a) b)) > (cdr l) > l))) 1> (match @(scan-all (@x 5 . @nil)) '(5 0 4 5 8 9 5) x) (4 9) 2> (window-mappend 1 nil (do if (and @1 (= @2 5)) (list @1)) #(5 0 4 5 8 9 5)) #(4 9) -- TXR Programming Language: http://nongnu.org/txr Cygnal: Cygwin Native Application Library: http://kylheku.com/cygnal Mastodon: @Kazinator@mstdn.ca