【发布时间】:2014-05-28 14:01:15
【问题描述】:
我是 Haskell 的新手。
我不明白为什么我们在下面的代码中使用幺半群和 instance Functor Matrix 以及 instance Functor Matrix 是如何工作的?
instance Functor Matrix where
fmap f (M n m v) = M n m $ fmap (fmap f) v
instance Num a => Num (Matrix a) where
fromInteger = M 1 1 . V.singleton . V.singleton . fromInteger
negate = fmap negate
(+) = add
(*) = mult
abs = fmap abs
signum = fmap signum
scalarMult :: Num a => a -> Matrix a -> Matrix a
scalarMult = fmap . (*)
我知道函子对于negate、(*)、abs、signum 是必需的,但我需要详细说明。请帮帮我。
【问题讨论】:
-
请显示
Matrix的定义。我可以大致猜出它的外观,但正确处理所有细节对于提供更好的示例很有用。 -
该代码中没有幺半群。澄清你的意思。另外,请包括您使用的数据/类型声明
Matrix(或链接到您从中获取它们的库)。 -
import Data.Monoid import Prelude -
@dmitryvodop 在
Data.Monoid或Prelude中没有定义Matrix类型(无需自行导入,它会自动导入)。Matrix定义在哪里? -
@leftaroundabout 我检查了这段代码:hackage.haskell.org/package/matrix-0.2.1/docs/src/…