添加向量元素(Scheme R5RS) - 请参阅修订后的代码部分

时间:2010-12-12 07:00:43

标签: vector scheme

我想在Scheme中的向量中添加所有项目。

我相信我的问题区域是我使用lambda的方式(非常不确定这个表达式的正确用法),将向量的长度分配给变量i并添加我试图从向量中的每个元素获取的值。不确定如何根据错误消息修复错误。

我得到的错误只是:

  

#<过程>

代码:

(define (sum X)
   (define length (vector-length X)) ;potential problem area
       (lambda (length)
       (lambda (total)
          (do (
              (i length (- i 1))
              (a (vector-ref X i)(+ a total)) ; potential problem area
              )
           ((zero? i) total)
            )
         )
         )
  )

修改后的代码(感谢user479988) - 我删除了lambdas,意识到我不需要它们。并将变量i定义为初始值0。

错误现在输出显示为0.

The code:

(define (sum X)
  (define length (vector-length X)) ;potential problem area
  (define total 0)
  (define i 0)
  (do (
       (i length (- i 1))
       (a (vector-ref X i)(+ a total)) ; potential problem area
       ((zero? i) total)
       )
    )
  )

你能告诉我吗? i)错误 ii)算法的逻辑

谢谢!

1 个答案:

答案 0 :(得分:1)

我无法真正告诉你程序的结构,因为括号不匹配,缩进很难读,但我认为你没有给lambdas任何输入所以不返回总和,你返回函数你因为你没有评估它们所以用lambdas制作。