From Newsgroup: comp.lang.lisp
(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 --- Synchronet 3.21a-Linux NewsLink 1.2