Versi fungsi adalah kependekan dari sintaks pencocokan penuh dalam kasus khusus di mana pernyataan kecocokan adalah keseluruhan fungsi dan fungsi hanya memiliki satu argumen (tupel dihitung sebagai satu). Jika Anda ingin memiliki dua argumen, maka Anda perlu menggunakan sintaks pencocokan penuh *. Anda dapat melihat ini dalam tipe dari dua fungsi berikut.
//val match_test : string -> string -> string
let match_test x y = match x, y with
| "A", _ -> "Hello A"
| _, "B" -> "Hello B"
| _ -> "Hello ??"
//val function_test : string * string -> string
let function_test = function
| "A", _ -> "Hello A"
| _, "B" -> "Hello B"
| _ -> "Hello ??"
Seperti yang Anda lihat, versi pencocokan membutuhkan dua argumen terpisah sedangkan versi fungsi menggunakan satu argumen tuple. Saya menggunakan versi fungsi untuk sebagian besar fungsi argumen karena saya menemukan sintaks fungsi terlihat lebih bersih.
* Jika Anda benar-benar ingin, Anda bisa mendapatkan versi fungsi untuk memiliki tanda tangan tipe yang tepat tetapi menurut saya tampilannya cukup jelek - lihat contoh di bawah.
//val function_match_equivalent : string -> string -> string
let function_match_equivalent x y = (x, y) |> function
| "A", _ -> "Hello A"
| _, "B" -> "Hello B"
| _ -> "Hello ??"