Groups | Search | Server Info | Login | Register
Groups > comp.lang.scheme > #6501
| From | "B. Pym" <Nobody447095@here-nor-there.org> |
|---|---|
| Newsgroups | comp.lang.lisp, comp.lang.scheme |
| Subject | Re: DEFUN list argument |
| Date | 2025-07-11 05:00 +0000 |
| Organization | A noiseless patient Spider |
| Message-ID | <104q5p5$1bb98$1@dont-email.me> (permalink) |
Cross-posted to 2 groups.
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)))
Back to comp.lang.scheme | Previous | Next — Next in thread | Find similar
Re: DEFUN list argument "B. Pym" <Nobody447095@here-nor-there.org> - 2025-07-11 05:00 +0000
Re: DEFUN list argument "B. Pym" <Nobody447095@here-nor-there.org> - 2025-08-06 00:00 +0000
Re: DEFUN list argument "B. Pym" <Nobody447095@here-nor-there.org> - 2025-08-06 01:10 +0000
Re: DEFUN list argument "B. Pym" <Nobody447095@here-nor-there.org> - 2025-08-28 06:15 +0000
csiph-web