• Re: Loop? ptooey

    From B. Pym@21:1/5 to All on Sat Jun 15 23:16:42 2024
    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 srfi-42) ;; list-ec

    (define some-list '(3 4 5 7 8))

    (list-ec
    (:list x (index i) some-list)
    (if (odd? x))
    (list i x))

    ===>
    ((0 3) (2 5) (3 7))

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)