• Lis(t|p) comprehensions

    From Robert L.@21:1/5 to All on Fri Feb 11 09:46:39 2022
    I know it is possible, but I'm not sure aboout how to write the following with a functional approach:

    (loop for i from 1 to 10 collect (loop for j from 1 to i collect j))
    ((1) (1 2) (1 2 3) (1 2 3 4) (1 2 3 4 5) (1 2 3 4 5 6) (1 2 3 4 5 6 7) (1 2
    3 4 5 6 7 8) (1 2 3 4 5 6 7 8 9) (1 2 3 4 5 6 7 8 9 10))

    Gauche Scheme:

    (define (rng low high func)
    (if (> low high)
    '()
    (cons (func low) (rng (+ 1 low) high func))))

    (rng 1 10 (cut rng 1 <> values))

    ===>
    ((1) (1 2) (1 2 3) (1 2 3 4) (1 2 3 4 5) (1 2 3 4 5 6) (1 2 3 4 5 6 7)
    (1 2 3 4 5 6 7 8) (1 2 3 4 5 6 7 8 9) (1 2 3 4 5 6 7 8 9 10))

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From B. Pym@21:1/5 to All on Sun Sep 8 21:50:31 2024
    XPost: comp.lang.scheme

    CL-USER> [x (x <- '(1 2 3)) (oddp x)]
    (1 3)

    CL-USER> (loop for x in (list 1 2 3) when (oddp x) collect x)
    (1 3)

    LOOP does some kind of list comprehension aswell, without an additional software.

    Scheme:

    (filter odd? '(3 4 5))

    (3 5)

    Does using CL cripple the brain, or does having a crippled brain
    cause one to use CL?

    If Lisp is to live, CL must die.


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