Sysop: | Amessyroom |
---|---|
Location: | Fayetteville, NC |
Users: | 23 |
Nodes: | 6 (0 / 6) |
Uptime: | 52:43:58 |
Calls: | 583 |
Files: | 1,139 |
D/L today: |
179 files (27,921K bytes) |
Messages: | 111,617 |
(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
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
B. Pym wrote:
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
(define (dot-product U V)
(gmk u U)
(gmk v V)
(do ((s 0 (+ s (* (u) (v)))))
((unull?) s)))
(dot-product (vector 1 2 3) (vector 4 5 6))
===>
32
Given:
;; Make a generator.
(define (gmk* vec)
(let ((v vec)
(i 0))
(values
(lambda()
(if (= i (vector-length v)) #f (begin0 (~ v i) (inc! i))))
(lambda() (= i (vector-length v))))))
(define-macro gmk
(lambda (sym vec)
`(define-values
(,sym ,(symbol-append sym 'null?))
(gmk* ,vec))))
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