【发布时间】:2018-11-28 15:13:25
【问题描述】:
我得到这段代码来制作转置矩阵,但它不能 100% 正常工作。
type Mat a = [[a]]
transpose' :: Eq a => Mat a -> Mat a
transpose' [] = []
transpose' (h:t) = primelem (h:t):transpose' (eliminate' (h:t))
primelem :: Mat a -> [a]
primelem [] = []
primelem [[x]] = [x]
primelem ((x:xs):t) = x : primelem t
eliminate' :: Eq a => Mat a -> Mat a
eliminate' [] = []
eliminate' (h:t) = (delete (head h) h):eliminate' t
*Main> transpose' [[1,2,3],[0,4,5],[0,06]]
[[1,0,0],[2,4,6],[3,5*** Exception:(..)Non-exhaustive patterns in function primelem
我想弄清楚,但我真的不知道缺少哪个案例。
【问题讨论】:
-
请提供一个更有用的问题标题。
-
这种方法是非常错误的。转置矩阵应该只是在位置上操纵元素,而不考虑它们的值,但
delete使用元素的值。 -
您正在寻找的答案是:
[[1,2,3],[0,4,5],[0,06]]中缺少逗号。 -
@WillNess 是的,我的错误,我已经放了一个逗号,但仍然是同样的错误。有人在这里发布了另一种执行此转置功能的方法
-
@deceze 抱歉,第一次来
标签: haskell