我想知道如何获得两个向量的点积。
(check-expect (dot (vector 5 1 1) (vector 1 0 0)) (+ 5 0 0))
(check-expect (dot (vector 1 1 5) (vector 1 0 0)) (+ 1 0 0))
所以基本上我正在尝试构建一个满足这两个检查期望的函数(点)。
到目前为止,我只是通过定义函数开始
(define (dot vec1 vec2)
我之前定义了一个与 foldl 相同的函数 (vfold),除了 vfoldl 作用于向量而不是列表,但我不确定我是否必须将它用于这个新函数。
; vfoldl: (X Y --> Y) Y [VectorOf X] --> Y
(define (vfoldl combine base avec)
(local [(define imax (sub1 (vector-length avec)))
(define (vaux combine avec index acc)
(cond [(= index imax) (combine (vector-ref avec imax) acc)]
[else (vaux combine
avec
(add1 index)
(combine (vector-ref avec index)
acc))]))]
(vaux combine avec 0 base)))