この手順は、与えられた手順に従って vec1 の値を置き換えることになっています。したがって、プロシージャが の場合+
、vec1 の各値が各要素の合計に置き換えられます。例えば:
~ (define v (vector 1 2 3 4 5 6))
~ (vector-join v + v)
~ v
#(2 4 6 8 10 12)
再帰に問題があることは知っていますが、それを修正する方法がわかりません。私は、この種の問題で正しいことだとは思わないコンスで再帰を行う方法を学んだだけです。
これまでの私のコードは次のとおりです。
(define v (vector 1 2 3 4 5 6))
(define (vector-join vec1 pre vec2)
(define (help v1 proc v2 i)
(if (null? v1) v1
(if (null? v2) v1
(if (>= i (vector-length v1)) v1
(cons (vector-set! v1 i (proc (vector-ref v1 i) (vector-ref v2 i)))
(help v1 proc v2 (add1 i)))))))
(help vec1 pre vec2 0))
これを入力すると:
(vector-join v + v)
それはこれを返します:
(#<void> #<void> #<void> #<void> #<void> #<void> . #(2 4 6 8 10 12))
#voids
最後の部分は正しい答えですが、なぜ出てくるのかわかりません。何か助けはありますか?