| Deutsch English Français Italiano |
|
<104dqa8$26hed$1@dont-email.me> View for Bookmarking (what is this?) Look up another Usenet article |
Path: nntp.eternal-september.org!news.eternal-september.org!eternal-september.org!.POSTED!not-for-mail
From: "B. Pym" <Nobody447095@here-nor-there.org>
Newsgroups: comp.lang.lisp
Subject: Re: Loop? ptooey
Date: Sun, 6 Jul 2025 12:31:06 -0000 (UTC)
Organization: A noiseless patient Spider
Lines: 62
Message-ID: <104dqa8$26hed$1@dont-email.me>
References: <1034o9e$9uii$1@dont-email.me>
MIME-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Injection-Date: Sun, 06 Jul 2025 14:31:06 +0200 (CEST)
Injection-Info: dont-email.me; posting-host="6946e6d5bd1474bb6d64b1a7e7254585";
logging-data="2311629"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1+qztcP0YE6xur1bTs7Au0O"
User-Agent: XanaNews/1.18.1.6
Cancel-Lock: sha1:SYRdES6AqR8P7ctlXdlEAxkzWVA=
B. Pym wrote:
> > Kenny Tilton wrote:
> >
> > > > KMP: The example you cite is quite simplistic.....snip...A
> > > > loop like this:
> > > >
> > > > (loop for x from 0
> > > > for y in some-list
> > > > when (good-result? y)
> > > > collect (list x y))
> > > >
> > > > is easy to write and maintain, and much easier to explain than the
> > > > equivalent, but more Lispy:
> > > >
> > > > (do ((x 0 (+ x 1))
> > > > (y-list some-list (cdr y-list))
> > > > (result '()))
> > > > ((null y-list) ;; [fixed]
> > > > (nreverse result))
> > > > (let ((y (first y-list)))
> > > > (when (good-result? y)
> > > > (push (list x y) result))))
> > >
> > > Ugh. Howse about:
> > >
> > > (let ((goody-pos -1)
> > > goodies)
> > > (dolist (it some-list (nreverse goodies))
> > > (incf goody-pos)
> > > (when (good-result? it)
> > > (push (list goody-pos it) goodies))))
> > >
> > > perhaps i will be swayed someday by the charms of loop, but i gotta
> > > tell you, i just don't get it. is loop for people who can't read lisp?
> > > can't be, lisp is easier to read than loop. stumped.
>
> Gauche Scheme:
>
> (use gauche.collection) ;; size-of
>
> (filter-map
> (lambda (x i)
> (and (> (size-of x) 1) (list i x)))
> '("a" "or" "I" "can" "o" "burn")
> (liota))
>
> ===>
> ((1 "or") (3 "can") (5 "burn"))
(use srfi-42) ;; list-ec
(define some-list '((d) () (g) (o) () (w)))
(list-ec
(:list x (index i) some-list)
(if (pair? x))
(list i x))
===>
((0 (d)) (2 (g)) (3 (o)) (5 (w)))