पार्सर कॉम्बिनेटर ऐसे फ़ंक्शन हैं जो एक इनपुट स्ट्रिंग लेते हैं और पार्स किया गया मान उसकी शेष अनपार्स्ड स्ट्रिंग के साथ लौटाते हैं। Parser<T> को (input: string) => [T, string] के रूप में परिभाषित किया जाता है। उदाहरण के लिए, p Integer "10 20 30" को संख्या 10 और शेष भाग " 20 30" में पार्स करता है। p Hello "Hello 100" से "Hello" निकालता है, जिससे " 100" बचता है। p Ignore Whitespace स्पेस का उपभोग करता है और " " तथा "100" लौटाता है। फिर p Integer "100" को संख्या 100 और एक खाली स्ट्रिंग में पार्स करता है।
p Seq जैसे अनुक्रम कॉम्बिनेटर पार्सरों को संयोजित करने की अनुमति देते हैं: p Seq(p Hello, p Ignore Whitespace, p Integer) "Hello 100" को टपल ["Hello", null, 100] में पार्स करता है। p Map कॉम्बिनेटर पार्स किए गए मानों को रूपांतरित करता है, जैसे ["Hello", null, 100] को {greeting: "Hello", who: 100} में बदलना। इसी तरह, p Seq(p Number, p Semicolon) पार्सर को बार-बार लागू करके हर संख्या-semicolon जोड़ी का उपभोग करते हुए "10;20;30;" को संख्याओं की सूची में पार्स करता है।
लेख नेटवर्क ping आउटपुट को पार्स करने का उदाहरण भी देता है, जो दिखाता है कि इन कॉम्बिनेटरों की मदद से कच्चे टेक्स्ट से संरचित डेटा कैसे निकाला जा सकता है। fold और unfold ऑपरेशन दिखाते हैं कि पार्सर मानों को कैसे घटा या पुनर्निर्मित कर सकते हैं, जैसे किसी सूची का योग निकालना, या "Hello 100" को ["Hello", " ", 100] में बदलना और इसके विपरीत।
स्रोत: Hacker News · HeadlinesBriefing द्वारा सारांशित