বিশেষ ক্ষেত্রে পুরো ম্যাচ সিনট্যাক্সের জন্য ফাংশন সংস্করণটি একটি সংক্ষিপ্ত হাত যেখানে ম্যাচের বিবৃতিটি সম্পূর্ণ ফাংশন এবং ফাংশনটিতে কেবল একটি যুক্তি থাকে (এক হিসাবে গণনা)। আপনি যদি দুটি যুক্তি রাখতে চান তবে আপনার সম্পূর্ণ ম্যাচ সিনট্যাক্স ব্যবহার করা দরকার। আপনি নিম্নলিখিত দুটি ফাংশনের প্রকারে এটি দেখতে পারেন।
//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 ??"
আপনি দেখতে পাচ্ছেন ম্যাচের সংস্করণটি দুটি পৃথক আর্গুমেন্ট নেয় যখন ফাংশন সংস্করণটি একটি একক দ্বিখণ্ডিত যুক্তি নেয় takes আমি বেশিরভাগ একক আর্গুমেন্ট ফাংশনগুলির জন্য ফাংশন সংস্করণটি ব্যবহার করি যেহেতু আমি ফাংশন সিনট্যাক্সটিকে আরও পরিষ্কার দেখাচ্ছে।
* আপনি যদি সত্যিই চাইতেন তবে সঠিক ধরণের স্বাক্ষর রাখতে আপনি ফাংশন সংস্করণটি পেতে পারেন তবে এটি আমার মতে বেশ কুৎসিত দেখাচ্ছে - নীচের উদাহরণটি দেখুন।
//val function_match_equivalent : string -> string -> string
let function_match_equivalent x y = (x, y) |> function
| "A", _ -> "Hello A"
| _, "B" -> "Hello B"
| _ -> "Hello ??"