में "प्रोग्रामिंग एफ #" मैं इस तरह एक पैटर्न मिलान में आए (मैं थोड़ा सरलीकृत): मैं समझता हूँ कि आखिरी मैच सिर पहचानतासमझौता विपक्ष ऑपरेटर के साथ मिलान पैटर्न
let rec len list =
match list with
| [] -> 0
| [_] -> 1
| head :: tail -> 1 + len tail;;
व्यावहारिक रूप से और सूची की पूंछ। संकल्पनात्मक रूप से, मुझे नहीं लगता कि यह क्यों काम करता है। जहां तक मैं समझता हूं, :: कंस ऑपरेटर है, जो सूची की मुख्य स्थिति में एक मूल्य जोड़ता है, लेकिन यह मुझे नहीं देखता है कि इसे यहां ऑपरेटर के रूप में उपयोग किया जा रहा है। क्या मुझे इसे सूचियों के लिए "विशेष वाक्यविन्यास" के रूप में समझना चाहिए, जहां :: संदर्भ के आधार पर ऑपरेटर या "मिलान पैटर्न" के रूप में व्याख्या की जाती है? या अन्य ऑपरेटरों के साथ सूचियों के अलावा अन्य विचारों के लिए भी यही विचार बढ़ाया जा सकता है?
धन्यवाद, आपका बिंदु :: एक विशेष निर्माण होने के नाते मैं बिल्कुल अस्पष्ट था। मैंने अन्य ऑपरेटरों को "समान" तरीके से मिलान करने वाले पैटर्न में उपयोग करने का प्रयास किया, लेकिन इससे ज्यादा समझ नहीं आई और मुझे कहीं भी नहीं मिला, जो मुझे विपक्ष के बारे में सोच रहा था। – Mathias
ध्यान दें कि यह टुपल्स के लिए भी सही है - आप (,) पैटर्न को बनाने और मिलान करने/अनपैक करने के लिए पैटर्न का उपयोग कर सकते हैं, और अन्य प्रकारों के लिए भी (कुछ()/कोई नहीं) आदि – Benjol
यहां सभी की एक सूची है [सभी समर्थित पैटर्न प्रकार] (उदाहरण के साथ https://docs.microsoft.com/en-us/dotnet/articles/fsharp/language-reference/pattern-matching)। – JanDotNet