繁体   English   中英

将函数应用于矩阵的每个元素

[英]Apply a function to each element of a matrix

我正在尝试将函数应用于Matrix但我不知道如何继续。

以下是我定义矩阵的方法:

data Matrice a = Mat [[a]]

montre [] = "/"
montre (t:q) = "" ++ (Pp.printf "%5s" (show t)) ++ " " ++ (montre q)

instance (Show a) => Show (Matrice a) where
        show (Mat ([])) = ""
        show (Mat (t:q)) = "/" ++ (montre t) ++ "\n" ++ (show (Mat q))

然后,一旦我的Matrix被定义,我想将我的函数z95应用于矩阵的每个元素。

这是我的z95函数的签名(允许将整数转换为此整数模95)

z95 n = Z95(n %% 95)
z95 18 = 18%95

我试图做一个双map也访问我的矩阵的元素,但后来我没有弄清楚如何应用我的z95功能。

谢谢你的帮助!

您可以为类型定义Functor实例,这是将函数映射到容器元素的常用方法。

instance Functor Matrice where
  fmap f (Mat xss) = Mat (map (map f) xss)

现在你可以写了

>> let m = Mat [[1,2,3],[4,5,6]]
>> fmap (+3) m -- => Mat [[4,5,6],[7,8,9]]

或者在你的情况下

>> fmap z95 m

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM