• .Re: Simple problem in PG's ANSI Common Lisp

    From Robert L.@21:1/5 to paul graham on Fri Feb 25 17:34:42 2022
    paul graham wrote:

    Or you could write

    (defun pos+ (lst)
    (let ((i -1))
    (mapcar #'(lambda (x) (+ x (incf i)))
    lst)))

    Btw, in Arc that would be

    (def pos+ (lst)
    (let i -1
    (map [+ _ (++ i)] lst)))

    It's better in Gauche Scheme.

    (define (pos+ lst)
    (map + lst (lrange 0)))

    (pos+ '(200 300 400 500))
    ===>
    (200 301 402 503)


    Another way:

    (use gauche.sequence) ;; map-with-index

    (define (pos+ lst)
    (map-with-index + lst))

    (pos+ '(200 300 400 500))
    ===>
    (200 301 402 503)

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Robert L.@21:1/5 to Robert L. on Sat Mar 19 20:00:50 2022
    On 2/25/2022, Robert L. wrote:

    It's better in Gauche Scheme.

    (define (pos+ lst)
    (map + lst (lrange 0)))

    (pos+ '(200 300 400 500))
    ===>
    (200 301 402 503)

    Shorter:

    (define (pos+ lst)
    (map + lst (liota)))

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