我已经问了一个类似的question,但还不够清楚,所以我决定改写它。
我知道矩阵是applicative functor
但不是monad。我想知道是否有一个简单实用的例子<*>
用于矩阵。
答案 0 :(得分:3)
矩阵的可能Applicative
实例将使其类似于ZipList。使用F
函数矩阵和X
值矩阵,F <*> X
将F
中的每个函数逐点应用于X
中的每个值。结果在每个维度中被截断以适合最短矩阵。 pure f
在每个点都给出了一个带f
的无限矩阵。作为示例,然后逐点矩阵乘法为(*) <$> A <*> B
。
除了截断和使用无穷大之外,您还可以使用accelerate
中使用的幻像类型参数来修复矩阵的形状。当然,你也可以像固定大小的ziplists一样声明一个Monad实例。