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