• Re: Mapping is beautiful

    From B. Pym@21:1/5 to All on Fri Aug 29 01:24:37 2025
    (defun diff-pair (pr)
    (- (cadr pr) (car pr)))

    (defun make-length-list(coord)
    (mapcar #'diff-pair coord))

    (make-length-list '((100 200)(300 400)(455 526)))

    -----------------------------------------------------
    OUTPUT -----------------------------------------------------

    DIFF-PAIR
    MAKE-LENGTH-LIST
    (100 100 71)


    Scheme:

    (% map (apply - (reverse _)) '((100 200)(300 400)(455 526)))
    ===>
    (100 100 71)

    Given:

    ;; Anaphoric macro to abbreviate lambdas for higher-order functions.
    ;; Uses "_" for 1 argument;
    ;; uses "A:" and "B:" and so on for 2 or more arguments.
    ;; This version works under both Gauche Scheme
    ;; and Racket. Racket needs:
    ;; (require compatibility/defmacro)
    ;;
    (define-macro %
    (case-lambda
    ((func expr List) `(,func (lambda(_) ,expr) ,List))
    ((func expr . more)
    (let* ((n 64)
    (nums (map (lambda _ (set! n (+ 1 n)) n) more))
    (vnames
    (map (lambda(n)
    (string->symbol (string (integer->char n) #\:)))
    nums)))
    `(,func (lambda ,vnames ,expr) ,@more)))))

    --
    [T]he problem is that lispniks are as cultish as any other devout group and basically fall down frothing at the mouth if they see [heterodoxy].
    --- Kenny Tilton
    The good news is, it's not Lisp that sucks, but Common Lisp. --- Paul Graham

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