re: matrix operations

Liste des GroupesRevenir à cl lisp 
Sujet : re: matrix operations
De : No_spamming (at) *nospam* noWhere_7073.org (B. Pym)
Groupes : comp.lang.lisp
Date : 03. Jul 2024, 03:32:54
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <v629o5$1sdhf$1@dont-email.me>
User-Agent : XanaNews/1.18.1.6
Barry Margolin wrote:

Zachary Turner <ztur...@bindview.com> wrote:
I've got a 3x3 matrix, stored as ((r1c1 r1c2 r1c3) (r2c1 r2c2 r2c3) (r3c1
r3c2 r3c3)).  I want to check if any of the columns have the same three
elements.  It's easy for rows, I can just use
(or
  (every #'equal (car matrix))
  (every #'equal (cadr matrix))
  (every #'equal (caddr matrix)))
 
Actually, that doesn't work.  EVERY passes a single element to the test
function, but EQUAL requires two arguments.  What you need is:
 
(or (every #'(lambda (x) (equal x (caar matrix)))
           (cdar matrix))
    (every #'(lambda (x) (equal x (caadr matrix)))
           (cdadr matrix))
    (every #'(lambda (x) (equal x (caaddr matrix)))
           (cdaddr matrix)))

That's hideous.

 
My questions are:
a) Can I do this more elegantly using a mapxxx function?
 
(defun (all-elements-equal (list)
  (destructuring-bind (head . tail) list
    (every #'(lambda (x) (equal x head))
           tail))))

"#'(lambda" shows that he doesn't understand
the lambda macro.


Scheme (Gauche or Racket)

;; Racket needs this:
(require srfi/1)  ;; every

(define (all-elements-equal lst)
  (or (null? lst)
      (every equal? lst (cdr lst))))

Date Sujet#  Auteur
3 Jul 24 * Re: matrix operations2B. Pym
3 Jul 24 `- Re: matrix operations1Kaz Kylheku

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal