2
我希望这对你们中的一些人来说会很容易。 我发现在这个论坛这个解决方案:Ocaml中的int列表列表的移调
let rec transpose list = match list with
| [] -> []
| [] :: xss -> transpose xss
| (x::xs) :: xss ->
(x :: List.map List.hd xss) :: transpose (xs :: List.map List.tl xss)
这是一个列表的列表的换位和它的伟大工程。
现在我需要相同的这个,而不是将列表列表转换为列表列表以将int列表列表转置为列表列表。
谢谢大家!
是的,我知道'a可以是任何类型,并且效果更好,但是我必须这样做。你能告诉我还是写下整个代码,我可以强制你写这个函数。谢谢! – Marko 2013-04-11 11:12:16
@Marko只需添加我写的单行(当然,您可以将'int_transpose'更改为任何名称)到您所写的'transpose'的定义。如果你愿意,你也可以直接注释'transpose':'let rec transpose(list:int list list):int list list = ...' – cygin 2013-04-11 11:35:14
你也可以在你的函数中添加一个返回类型注释:'let rec transpose list:int list list = match ...'由于cygin告诉你,这只会改变类型,而不会改变函数的行为。所以除了文档以外,没有真正的理由这样做。在某些情况下,代码运行速度更快,多态性更少,但这不是这种情况,因为它只是执行列表操作。这些对于所有元素类型都是相同的。 – 2013-04-11 14:46:24