使用地图和过滤功能

时间:2017-09-12 04:55:06

标签: haskell

我无法弄清楚如何为矩阵实现地图和过滤功能。有没有人有任何满足这些测试的建议?

-- | Matrix Tests
--
-- prop> mapMatrix (\a -> a - 3) (mapMatrix (+ 3) x) == x
--
-- >>> filterMatrix (< 3) matrix1
-- [[1,2],[2]]

-- >>> filterMatrix (> 80) []
-- []

-- >>> transpose' matrix2
-- [[1,4],[5,8]]


mapMatrix :: (a -> b) -> [[a]] -> [[b]]
mapMatrix f [list] = [map f list]

filterMatrix :: (a -> Bool) -> [[a]] -> [[a]]
filterMatrix = undefined

transpose' :: [[a]] -> [[a]]
transpose' = undefined

matrix1 = [[1 .. 10], [2 .. 20]]

matrix2 = [[1, 5], [4, 8]]

1 个答案:

答案 0 :(得分:1)

一些提示,但不是一个完整的解决方案,因为这听起来像家庭作业。 mapmatrixfilterMatrix:一次编写在矩阵的一行上工作的函数,然后将map列在行列表中。 transpose':执行此操作的一种方法是使用列表推导将!!运算符应用于索引列表,另一种方法是递归函数,一次从输入中删除一行并添加一次一列到输出。

filterMatrix是否应该返回不是有效矩阵的列表列表?