Groups | Search | Server Info | Login | Register


Groups > comp.lang.scheme > #6501

Re: DEFUN list argument

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.

Show all headers | View raw


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 | NextNext in thread | Find similar


Thread

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