矩阵作为Applicative functor的示例

时间:2015-04-26 07:37:41

标签: matrix functional-programming applicative

我已经问了一个类似的question,但还不够清楚,所以我决定改写它。

我知道矩阵是applicative functor但不是monad。我想知道是否有一个简单实用的例子<*>用于矩阵。

1 个答案:

答案 0 :(得分:3)

矩阵的可能Applicative实例将使其类似于ZipList。使用F函数矩阵和X值矩阵,F <*> XF中的每个函数逐点应用于X中的每个值。结果在每个维度中被截断以适合最短矩阵。 pure f在每个点都给出了一个带f的无限矩阵。作为示例,然后逐点矩阵乘法为(*) <$> A <*> B

除了截断和使用无穷大之外,您还可以使用accelerate中使用的幻像类型参数来修复矩阵的形状。当然,你也可以像固定大小的ziplists一样声明一个Monad实例。