【问题标题】:Separate Rows and Columns of Matrix in Haskell在 Haskell 中分离矩阵的行和列
【发布时间】:2020-01-30 21:46:44
【问题描述】:

我是 Haskell 的新手,我很难弄清楚。 假设我有一个矩阵,我想将所述矩阵分成 rowscols。我该怎么做?

-- set up
type Matrix m = [Row m]
type Row m = [m]

-- gets rows from matrix
rows :: Matrix m -> [Row m]
rows = ???

-- gets cols from matrix
cols :: Matrix m -> [Row m]
cols = ???

【问题讨论】:

  • 您的 Matrix m 类型已经定义为 [Row m],因此它已经表示为行列表(或列,取决于您的想法),你不需要在那里做任何事情。另一种可以使用transpose函数。
  • 再一次,我很新。我应该如何使用转置?如果我确实想将行设置为某些东西,即使它已经在行专业中,我该怎么做?感谢您的帮助。
  • 您是否查看了我提供的文档链接中的示例?在我看来,他们非常清楚 transpose 的作用以及如何使用它。恐怕我不明白你的第二个问题。
  • 行是否只是“行 = 行”(如果我想将某些内容放在行所在的位置)。 cols 会是“ cols = transpose”吗?再说一次,我还在学习,所以请原谅我的无知。
  • @JonPurdy - 公平点,但我认为很明显这不是这里发生的事情,提到这种情况可能只会让 OP 感到困惑。

标签: list haskell matrix functional-programming


【解决方案1】:

由于 Matrix m = [Row m] 这意味着它已经分成了行

...
rows = id

对于 cols,我们可以使用 transpose,其工作方式与线性代数中的 transpose 工作方式相同。

...
cols = transpose

【讨论】:

  • rows = rows 定义了一个无限循环。也许你的意思是rows rs = rsrows = id(它们是等价的)
猜你喜欢
  • 2023-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-08
  • 1970-01-01
  • 2016-09-06
相关资源
最近更新 更多