方案在矩阵中添加列

Scheme add columns in a matrix

我正在尝试编写一个函数,它接受一个矩阵(表示为列表的列表)并将元素添加到列中,returns 一个向量(表示为一个列表):

示例:

    (define sample
      '((2 6 0 4)
        (7 5 1 4)
        (6 0 2 2)))

应该return'(15 11 3 10).

我尝试使用 (list-ref) 函数两次来获取每列的第一个元素,但没有成功。我正在尝试类似的东西:

(map (lambda (matrix) ((list-ref (list-ref matrix 0) 0)) (+ matrix))

如果我们忘记索引并考虑高阶过程,解决方案很简单,试试这个:

(define sample
  '((2 6 0 4)
    (7 5 1 4)
    (6 0 2 2)))

(apply map + sample)
=> '(15 11 3 10)

说明:map可以将多个列表作为参数。如果我们 apply 它到 sample (这是一个列表的列表)并传递 + 作为进行映射的过程,它将依次从每个列表中取出一个元素并添加他们,生成一个包含结果的列表 - 有效地添加矩阵中的所有列。