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