Sujet : Re: DEFUN list argument
De : Nobody447095 (at) *nospam* here-nor-there.org (B. Pym)
Groupes : comp.lang.lisp comp.lang.schemeDate : 11. Jul 2025, 06:00:22
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <104q5p5$1bb98$1@dont-email.me>
User-Agent : XanaNews/1.18.1.6
Steven E. Harris wrote:
(defun dot-product (u v)
(loop for elem-u across u
for elem-v across v
summing (* elem-u elem-v)))
(dot-product (vector 1 2 3)
(vector 4 5 6))
32
Gauche Scheme
(use gauche.sequence)
(define (dot-product u v)
(fold
(lambda (e-u e-v sum) (+ sum (* e-u e-v)))
0
u
v))
(dot-product #(1 2 3) #(4 5 6))
===>
32
Here's a version that handles any number of vectors.
(use scheme.vector)
(define (dot-product . vecs)
(apply vector-fold
(lambda (sum . elems) (+ sum (apply * elems)))
0
vecs))
(dot-product #(1 2 3) #(4 5 6) #(7 8 9))
===>
270
Shorter:
(define (dot-product u v)
(fold + 0 (map * u v)))
Shorter:
(define (dot-product u v)
(apply + (map * u v)))