一一は、エラーを取得し、長さの異なる二つのリストを圧縮しようとした場合:なぜ異なる長さの2つのリストを圧縮できないのですか? F#ので
:List.zip [1..4] [1..3]
// System.ArgumentException: The lists had different lengths.
しかし、長さの異なる2つの引数リストを受け入れたzipの代わりの定義を定義することは非常に簡単です。
let rec zip' (xs: 'T list) (ys: 'T list) =
match (xs, ys) with
| ([], _) -> []
| (_, []) -> []
| ((z::zs), (w::ws)) -> (z, w) :: zip' zs ws
zip' [1..4] [1..3]
// val it : (int * int) list = [(1, 1); (2, 2); (3, 3)]
この代替定義を使用しない理由はありますか?なぜそれが最初に採用されなかったのですか?
ライブラリ関数に振る舞いに基づいて異なる名前を付ける場合は、 'exist2'、' forall2'、 'iter2'、' map2'の代替案も提示する必要があります。 – kaefer