2

これが一部の人にとって非常に簡単になることを願っています。このフォーラムでこの解決策を見つけました:

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)

これはリストのリストの転置であり、うまく機能します。

これと同じことが必要ですが、a' list リストを a' list リストに転置する代わりに、int list リストを int list リストに転置します。

皆さん、ありがとうございました!

4

1 に答える 1

5

それがポリモーフィズムです。タイプ'aは任意のタイプにすることができるため、見つけたソリューションは と同様に機能しint list listます。

型が である関数が本当に必要な場合はint list list -> int list list、型アノテーションを使用していつでも強制できます。

let int_transpose : int list list -> int list list = transpose

しかし、なぜあなたがそうするのかわかりません。

于 2013-04-11T10:58:27.463 に答える