为什么 Haskell 中是 `transpose [[]] == []`?

问题描述 投票:0回答:1

考虑以下因素?

ghci> transpose []
[]
ghci> transpose [[]]
[]
ghci> transpose [[[]]]
[[[]]]
ghci> transpose [[[[]]]]
[[[[]]]]
ghci> transpose [[[[[]]]]]
[[[[[]]]]]
ghci> transpose [[[[[[]]]]]]
[[[[[[]]]]]]

其中一个与另一个不同:p

base
中看到如此看似不雅的东西对我来说很奇怪,但我认为他们选择使用
transpose [[]] == []
有一些极好的代数或理论原因。有人能解释一下吗?

arrays haskell matrix
1个回答
1
投票

transpose
交换行和列。

[]
有 0 行和未明确定义的列数,该函数将其视为 0。用 0 列交换 0 行不会改变任何内容。

[[[]]]
及以上各有 1 行和 1 列。将 1 行与 1 列交换也不会改变任何内容。

[[]]
有 1 行和 0 列。交换 1 行和 0 列会产生 0 行的输出:一个空列表。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.