Deutsch   English   Français   Italiano  
<1034o9e$9uii$1@dont-email.me>

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

Path: 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: Fri, 20 Jun 2025 22:45:03 -0000 (UTC)
Organization: A noiseless patient Spider
Lines: 47
Message-ID: <1034o9e$9uii$1@dont-email.me>
MIME-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Injection-Date: Sat, 21 Jun 2025 00:45:04 +0200 (CEST)
Injection-Info: dont-email.me; posting-host="aa632a0fd11017dc33a603ef85fe3ef5";
	logging-data="326226"; mail-complaints-to="abuse@eternal-september.org";	posting-account="U2FsdGVkX1/qG2aPCbrtZ7JtV8ceDPE6"
User-Agent: XanaNews/1.18.1.6
Cancel-Lock: sha1:tHag5+Pm0HeB22wVk3xgNHuNbsQ=

> 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"))