【发布时间】:2013-11-16 11:31:22
【问题描述】:
我无法理解 Rosetta Code 中 Scheme 中的矩阵乘法示例:
(define multiplyMatrices
(lambda (matrix1 matrix2)
(map (lambda (row)
(apply map (lambda column
(apply + (map * row column)))
matrix2))
matrix1)))
其中matrix1 和matrix2 都是列表列表。我的问题是:为什么第四行的column 没有用括号括起来?
据我了解,lambda 表达式的形式为 (lambda (<id1 id2 ...>) <exp>)。通过测试代码,我知道它可以工作,并且我知道将 column 括在括号中确实会破坏程序,但我不明白该行是如何在语法上的,而且我在网上找到的对 lambda 表达式的每个解释总是描述它们就像我在上面所做的那样。
【问题讨论】:
标签: parameters lambda scheme matrix-multiplication