tupleは関数の引数でもバラして受け取れるのが素晴らしい

以下のようにローカル変数に対して、バラして受け取れるのは知っていたが、

> let a,b = (100, 123);;

val b : int = 123
val a : int = 100

関数の引数に対してもこういう書き方していいのか。

> [(1,1);(3,3)] |> List.reduce (fun (x1, x2) (y1,y2) -> (x1+y1, x2+y2));;
val it : int * int = (4, 4)

便利いい。