하나 하나가 오류를 얻을 길이가 다른 두 개의 목록을 압축하려고하면 :길이가 다른 두 개의 목록을 왜 압축 할 수 없습니까? F 번호에
:List.zip [1..4] [1..3]
// System.ArgumentException: The lists had different lengths.
그러나 길이가 다른 두 개의 인수 목록을 받아 우편의 또 다른 정의를 정의하는 것은 매우 쉽습니다
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