फंक्शनल रिएक्टिव प्रोग्रामिंग: Difference between revisions

From Vigyanwiki
(Created page with "{{Distinguish|text=factory reset protection (FRP), a feature in some android devices}} {{Programming paradigms}} कार्यात्मक...")
 
No edit summary
 
(15 intermediate revisions by 5 users not shown)
Line 1: Line 1:
{{Distinguish|text=factory reset protection (FRP), a feature in some [[Android (operating system)|android]] devices}}
{{Distinguish|text=फ़ैक्टरी रीसेट सुरक्षा (FRP), कुछ [[Android (ऑपरेटिंग सिस्टम)|android]] उपकरणों में सुविधा}}
{{Programming paradigms}}
{{Programming paradigms}}
कार्यात्मक [[प्रतिक्रियाशील प्रोग्रामिंग]] (एफआरपी) [[कार्यात्मक प्रोग्रामिंग]] के बिल्डिंग ब्लॉक्स (जैसे मैप (उच्च-ऑर्डर फ़ंक्शन), फोल्ड (उच्च-ऑर्डर फ़ंक्शन), फ़िल्टर (उच्च-ऑर्डर फ़ंक्शन)) का उपयोग करके प्रतिक्रियाशील प्रोग्रामिंग ([[ अतुल्यकालिक प्रोग्रामिंग ]] [[डेटाफ्लो प्रोग्रामिंग]]) के लिए एक [[प्रोग्रामिंग प्रतिमान]] है। एफआरपी का उपयोग [[ ग्राफिकल यूज़र इंटरफ़ेस ]] (जीयूआई), [[रोबोटिक]]्स, गेम्स और संगीत प्रोग्रामिंग के लिए किया गया है, जिसका लक्ष्य स्पष्ट रूप से मॉडलिंग समय द्वारा इन समस्याओं को सरल बनाना है।{{Citation needed|date = March 2016}}
'''फंक्शनल रिएक्टिव प्रोग्रामिंग''' (एफआरपी) [[कार्यात्मक प्रोग्रामिंग|फंक्शनल प्रोग्रामिंग]] के बिल्डिंग ब्लॉक्स जैसे मैप, फोल्ड, फ़िल्टर का उपयोग करके रिएक्टिव प्रोग्रामिंग (एसिंक्रोनस डेटाफ्लो प्रोग्रामिंग) के लिए प्रोग्रामिंग प्रतिमान है। एफआरपी का उपयोग [[ ग्राफिकल यूज़र इंटरफ़ेस |ग्राफिकल यूज़र इंटरफ़ेस]] (जीयूआई), [[रोबोटिक|रोबोटिक्स]], गेम्स एवं संगीत प्रोग्रामिंग के लिए किया गया है, जिसका लक्ष्य स्पष्ट रूप से मॉडलिंग समय द्वारा इन कठिनाइयों को सरल बनाना है।


== एफआरपी का सूत्रीकरण ==
== एफआरपी का सूत्रीकरण ==
कार्यात्मक प्रतिक्रियाशील प्रोग्रामिंग का मूल सूत्रीकरण [[कॉनल इलियट]] और [[पॉल हुडक]] द्वारा ICFP 97 पेपर कार्यात्मक प्रतिक्रियाशील एनीमेशन में पाया जा सकता है।<ref>{{cite web |last1=Elliott |first1=Conal |last2=Hudak |first2=Paul |title=कार्यात्मक प्रतिक्रियाशील एनिमेशन|url=http://conal.net/papers/icfp97/ |website=कार्यात्मक प्रतिक्रियाशील एनिमेशन|publisher=ICFP ’97 |access-date=14 July 2018 |ref=fran}}</ref>
फंक्शनल रिएक्टिव प्रोग्रामिंग का मूल सूत्रीकरण [[कॉनल इलियट]] एवं [[पॉल हुडक]] द्वारा लिखित ICFP 97 पेपर फंक्शनल रिएक्टिव एनीमेशन में प्राप्त किया जा सकता है।<ref>{{cite web |last1=Elliott |first1=Conal |last2=Hudak |first2=Paul |title=कार्यात्मक प्रतिक्रियाशील एनिमेशन|url=http://conal.net/papers/icfp97/ |website=कार्यात्मक प्रतिक्रियाशील एनिमेशन|publisher=ICFP ’97 |access-date=14 July 2018 |ref=fran}}</ref>1997 में अपनी प्रारम्भ के पश्चात से एफआरपी ने कई रूप ले लिए हैं। विविधता की धुरी असतत विरुद्ध निरंतर शब्दार्थ है। अन्य धुरी यह है कि एफआरपी सिस्टम को गतिशील रूप से कैसे परिवर्तित किया जा सकता है।<ref>{{Citation | first1 = Henrik | last1 = Nilsson | first2 = Antony | last2 = Courtney | first3 = John | last3 = Peterson | url = https://www.antonycourtney.com/pubs/frpcont.pdf | contribution = Functional Reactive Programming, Continued | title = Haskell Workshop | orig-year = 2002 |date=Feb 2011 | number = 2}}.</ref>
1997 में अपनी शुरुआत के बाद से एफआरपी ने कई रूप ले लिए हैं। विविधता की एक धुरी असतत बनाम निरंतर शब्दार्थ है। एक अन्य धुरी यह है कि एफआरपी सिस्टम को गतिशील रूप से कैसे बदला जा सकता है।<ref>{{Citation | first1 = Henrik | last1 = Nilsson | first2 = Antony | last2 = Courtney | first3 = John | last3 = Peterson | url = https://www.antonycourtney.com/pubs/frpcont.pdf | contribution = Functional Reactive Programming, Continued | title = Haskell Workshop | orig-year = 2002 |date=Feb 2011 | number = 2}}.</ref>


'''निरंतर'''


=== सतत ===
एफआरपी के प्रारम्भी सूत्रीकरण में निरंतर शब्दार्थ का उपयोग किया गया था, जिसका लक्ष्य कई परिचालन विवरणों का सार निकालना था जो किसी प्रोग्राम के अर्थ के लिए महत्वपूर्ण नहीं हैं।<ref>{{Citation | first1 = Conal | last1 = Elliott | first2 = Paul | last2 = Hudak | contribution-url = http://conal.net/papers/icfp97/ | contribution = Functional Reactive Animation | title = ICFP | year = 1997}}.</ref> इस फॉर्मूलेशन के प्रमुख गुण हैं:
एफआरपी के शुरुआती सूत्रीकरण में निरंतर शब्दार्थ का उपयोग किया गया था, जिसका लक्ष्य कई परिचालन विवरणों का सार निकालना था जो किसी कार्यक्रम के अर्थ के लिए महत्वपूर्ण नहीं हैं।<ref>{{Citation | first1 = Conal | last1 = Elliott | first2 = Paul | last2 = Hudak | contribution-url = http://conal.net/papers/icfp97/ | contribution = Functional Reactive Animation | title = ICFP | year = 1997}}.</ref> इस फॉर्मूलेशन के प्रमुख गुण हैं:


* मॉडलिंग मान जो निरंतर समय के साथ बदलते रहते हैं, उन्हें व्यवहार और बाद के संकेत कहा जाता है।
* मॉडलिंग मूल्य जो निरंतर समय के साथ परिवर्तित होते रहते हैं, उन्हें बिहेवियर एवं पश्चात के संकेत कहा जाता है।
* मॉडलिंग [[ घटना (कंप्यूटिंग) ]] जो समय में अलग-अलग बिंदुओं पर घटित होते हैं।
* [[ घटना (कंप्यूटिंग) |इवेंट (कंप्यूटिंग) की मॉडलिंग]] जो समय में भिन्न-भिन्न बिंदुओं पर घटित होते हैं।
* सिस्टम को घटनाओं के जवाब में बदला जा सकता है, जिसे आम तौर पर स्विचिंग कहा जाता है।
* सिस्टम को इवेंट की प्रतिक्रिया में परिवर्तित किया जा सकता है, जिसे सामान्यतः स्विचिंग कहा जाता है।
* प्रतिक्रियाशील मॉडल से नमूनाकरण दर जैसे मूल्यांकन विवरण को अलग करना।
* रिएक्टिव मॉडल से सैंपलिंग दर जैसे मूल्यांकन विवरण को भिन्न करना है।


साइड इफेक्ट (कंप्यूटर विज्ञान)|साइड-इफेक्ट मुक्त भाषाओं में एफआरपी का यह सिमेंटिक मॉडल आमतौर पर निरंतर कार्यों के संदर्भ में है, और आमतौर पर समय के साथ।<ref>{{Citation | first1 = Antony | last1 = Courtney | first2 = Conal | last2 = Elliott | contribution-url = https://www.antonycourtney.com/pubs/genuinely-functional-guis.ps.gz |date=Feb 2011 | publisher = Yale | contribution = Genuinely Functional User Interfaces | orig-year = 2001 | title = Haskell Workshop}}.</ref> इस फॉर्मूलेशन को डिनोटेटिव कंटीन्यूअस टाइम प्रोग्रामिंग (DCTP) भी कहा जाता है।<ref>{{Citation | first1 = Conal | last1 = Elliot | contribution-url = http://conal.net/talks/denotational-design-lambdajam-2014.pdf | contribution = Denotational Design | title = LambdaJam | year = 2014 | access-date = 5 May 2023}}</ref>
साइड-इफेक्ट मुक्त लैंग्वेजोंं में एफआरपी का यह सिमेंटिक मॉडल सामान्यतः निरंतर कार्यों के संदर्भ में है, एवं समय के साथ है।<ref>{{Citation | first1 = Antony | last1 = Courtney | first2 = Conal | last2 = Elliott | contribution-url = https://www.antonycourtney.com/pubs/genuinely-functional-guis.ps.gz |date=Feb 2011 | publisher = Yale | contribution = Genuinely Functional User Interfaces | orig-year = 2001 | title = Haskell Workshop}}.</ref> इस फॉर्मूलेशन को डिनोटेटिव कंटीन्यूअस टाइम प्रोग्रामिंग (डीसीपीटी) भी कहा जाता है।<ref>{{Citation | first1 = Conal | last1 = Elliot | contribution-url = http://conal.net/talks/denotational-design-lambdajam-2014.pdf | contribution = Denotational Design | title = LambdaJam | year = 2014 | access-date = 5 May 2023}}</ref>


'''असतत'''


=== असतत ===
इवेंट-संचालित एफआरपी एवं 0.17 से पूर्व [[एल्म (प्रोग्रामिंग भाषा)|एल्म (प्रोग्रामिंग लैंग्वेज)]] के संस्करणों जैसे फॉर्मूलेशन के लिए आवश्यक है कि अपडेट भिन्न-भिन्न एवं इवेंट-संचालित हों।<ref>{{Citation | first1 = Walid | last1 = Taha | first2 = Zhanyong | last2 = Wan | first3 = Paul | last3 = Hudak | url = http://www.cs.yale.edu/homes/zwan/papers/mcu/efrp.pdf | contribution = Event-Driven FRP | title = PADL | year = 2002 | publisher = Yale | access-date = 2013-09-23 | archive-url = https://web.archive.org/web/20130928163653/http://www.cs.yale.edu/homes/zwan/papers/mcu/efrp.pdf | archive-date = 2013-09-28 | url-status = dead }}.</ref> इन फॉर्मूलेशनों ने व्यावहारिक एफआरपी पर जोर दिया है, जिसमें शब्दार्थ पर ध्यान केंद्रित किया गया है जिसमें सरल एपीआई है जिसे रोबोटिक्स या वेब-ब्राउज़र जैसी सेटिंग में कुशलतापूर्वक प्रस्तावित किया जा सकता है।<ref>{{Citation | first1 = Evan | last1 = Czaplicki | first2 = Stephen | last2 = Chong | publisher = Harvard | contribution-url = http://people.seas.harvard.edu/~chong/abstracts/CzaplickiC13.html | contribution = Asynchronous Functional Reactive Programming for GUIs | title = PLDI | year = 2013}}.</ref>इन फॉर्मूलेशन में, यह सामान्य है कि बिहेवियर एवं इवेंट के विचारों को ऐसे संकेतों में संयोजित किया जाता है जिनका सदैव वर्तमान मूल्य होता है, किन्तु वे भिन्न-भिन्न रूप से परिवर्तित होते हैं।<ref>{{Citation | date = Feb 2011 | first1 = Zhanyong | last1 = Wan | first2 = Walid | last2 = Taha | first3 = Paul | last3 = Hudak | url = http://haskell.cs.yale.edu/wp-content/uploads/2011/02/rt-frp.pdf | contribution = Real-Time FRP | title = ICFP | number = 1 | access-date = 2013-09-23 | archive-url = https://web.archive.org/web/20130928163734/http://haskell.cs.yale.edu/wp-content/uploads/2011/02/rt-frp.pdf | archive-date = 2013-09-28 | url-status = dead }}.</ref>
इवेंट-संचालित एफआरपी और 0.17 से पहले [[एल्म (प्रोग्रामिंग भाषा)]] के संस्करणों जैसे फॉर्मूलेशन के लिए आवश्यक है कि अपडेट अलग-अलग और इवेंट-संचालित हों।<ref>{{Citation | first1 = Walid | last1 = Taha | first2 = Zhanyong | last2 = Wan | first3 = Paul | last3 = Hudak | url = http://www.cs.yale.edu/homes/zwan/papers/mcu/efrp.pdf | contribution = Event-Driven FRP | title = PADL | year = 2002 | publisher = Yale | access-date = 2013-09-23 | archive-url = https://web.archive.org/web/20130928163653/http://www.cs.yale.edu/homes/zwan/papers/mcu/efrp.pdf | archive-date = 2013-09-28 | url-status = dead }}.</ref> इन फॉर्मूलेशनों ने व्यावहारिक एफआरपी पर जोर दिया है, जिसमें शब्दार्थ पर ध्यान केंद्रित किया गया है जिसमें एक सरल एपीआई है जिसे रोबोटिक्स या वेब-ब्राउज़र जैसी सेटिंग में कुशलतापूर्वक लागू किया जा सकता है।<ref>{{Citation | first1 = Evan | last1 = Czaplicki | first2 = Stephen | last2 = Chong | publisher = Harvard | contribution-url = http://people.seas.harvard.edu/~chong/abstracts/CzaplickiC13.html | contribution = Asynchronous Functional Reactive Programming for GUIs | title = PLDI | year = 2013}}.</ref>
इन फॉर्मूलेशन में, यह आम बात है कि व्यवहार और घटनाओं के विचारों को ऐसे संकेतों में संयोजित किया जाता है जिनका हमेशा एक वर्तमान मूल्य होता है, लेकिन वे अलग-अलग रूप से बदलते हैं।<ref>{{Citation | date = Feb 2011 | first1 = Zhanyong | last1 = Wan | first2 = Walid | last2 = Taha | first3 = Paul | last3 = Hudak | url = http://haskell.cs.yale.edu/wp-content/uploads/2011/02/rt-frp.pdf | contribution = Real-Time FRP | title = ICFP | number = 1 | access-date = 2013-09-23 | archive-url = https://web.archive.org/web/20130928163734/http://haskell.cs.yale.edu/wp-content/uploads/2011/02/rt-frp.pdf | archive-date = 2013-09-28 | url-status = dead }}.</ref>


 
== इंटरैक्टिव एफआरपी ==
==इंटरैक्टिव एफआरपी==
यह बताया गया है कि सामान्य एफआरपी मॉडल, इनपुट से आउटपुट तक, इंटरैक्टिव प्रोग्रामों के लिए त्रुटिपूर्ण रूप से अनुकूल है।<ref>{{Cite web|url=http://conal.net/blog/posts/why-classic-frp-does-not-fit-interactive-behavior|title = Conal Elliott » Why classic FRP does not fit interactive behavior |date=December 9, 2008 |archive-url=https://web.archive.org/web/20221012020700/http://conal.net/blog/posts/why-classic-frp-does-not-fit-interactive-behavior |archive-date=2022-10-12 |url-status=live}}</ref> इनपुट से आउटपुट तक मैपिंग के अन्दर प्रोग्राम चलाने की क्षमता में अभाव का तात्पर्य निम्नलिखित समाधानों में से एक का उपयोग करना हो सकता है:
यह बताया गया है कि सामान्य एफआरपी मॉडल, इनपुट से आउटपुट तक, इंटरैक्टिव कार्यक्रमों के लिए खराब रूप से अनुकूल है।<ref>{{Cite web|url=http://conal.net/blog/posts/why-classic-frp-does-not-fit-interactive-behavior|title = Conal Elliott » Why classic FRP does not fit interactive behavior |date=December 9, 2008 |archive-url=https://web.archive.org/web/20221012020700/http://conal.net/blog/posts/why-classic-frp-does-not-fit-interactive-behavior |archive-date=2022-10-12 |url-status=live}}</ref> इनपुट से आउटपुट तक मैपिंग के भीतर प्रोग्राम चलाने की क्षमता में कमी का मतलब निम्नलिखित समाधानों में से एक का उपयोग करना हो सकता है:
*क्रियाओं की डेटा संरचना बनाएं जो आउटपुट के रूप में प्रदर्शित होते हैं। क्रियाएँ किसी बाहरी इंटरप्रेटर या परिवेश द्वारा चलायी जानी चाहिए। इसमें हास्केल की मूल स्ट्रीम इनपुट/आउटपुट सिस्टम की सभी कठिनाइयाँ विरासत में मिली हैं।<ref>{{cite web |url=https://courses.cs.washington.edu/courses/cse505/01au/functional/functional-io.pdf |title=I/O in Purely Functional Languages |first=Alan |last=Borning |archive-url=https://web.archive.org/web/20220428171557/https://courses.cs.washington.edu/courses/cse505/01au/functional/functional-io.pdf |archive-date=2022-04-28 |url-status=live}}</ref>
*क्रियाओं की एक डेटा संरचना बनाएं जो आउटपुट के रूप में दिखाई दें। क्रियाएँ किसी बाहरी दुभाषिया या परिवेश द्वारा चलायी जानी चाहिए। इसमें हास्केल की मूल स्ट्रीम I/O प्रणाली की सभी कठिनाइयाँ विरासत में मिली हैं।<ref>{{cite web |url=https://courses.cs.washington.edu/courses/cse505/01au/functional/functional-io.pdf |title=I/O in Purely Functional Languages |first=Alan |last=Borning |archive-url=https://web.archive.org/web/20220428171557/https://courses.cs.washington.edu/courses/cse505/01au/functional/functional-io.pdf |archive-date=2022-04-28 |url-status=live}}</ref>
*एरोइज्ड एफआरपी एवं एम्बेड एरो का उपयोग करें जो कार्य करने में सक्षम हैं। क्रियाओं में पहचान भी हो सकती है, जो उन्हें उदाहरण के लिए भिन्न-भिन्न परिवर्तनशील स्टोर बनाए रखने की अनुमति देती है। यह फ़जेट्स लाइब्रेरी एवं मोनाडिक स्ट्रीम फ़ंक्शंसद्वारा अपनाया गया दृष्टिकोण है।<ref>{{Cite web|url=https://cth.altocumulus.org/~hallgren/Thesis/fudgets_thesis_color.pdf|title=Fudgets – Purely Functional Processes with applications to Graphical User Interfaces|first1=Magnus|last1=Carlsson|first2=Thomas|last2=Hallgren|year=1998|archive-url=https://web.archive.org/web/20221015141447/https://cth.altocumulus.org/~hallgren/Thesis/fudgets_thesis_color.pdf|archive-date=2022-10-15|url-status=live}}</ref><ref>{{Citation |date=July 2016 | first1 = Ivan | last1 = Perez | first2 = Manuel | last2 = Barenz | first3 = Henrik | last3 = Nilsson | url = http://www.cs.nott.ac.uk/~psxip1/papers/2016-HaskellSymposium-Perez-Barenz-Nilsson-FRPRefactored-short.pdf | contribution = Functional Reactive Programming, Refactored | title = Haskell Symposium}}.</ref>
*एरोइज्ड एफआरपी और एम्बेड तीरों का उपयोग करें जो कार्य करने में सक्षम हैं। क्रियाओं में पहचान भी हो सकती है, जो उन्हें उदाहरण के लिए अलग-अलग परिवर्तनशील स्टोर बनाए रखने की अनुमति देती है। यह फ़जेट्स लाइब्रेरी द्वारा अपनाया गया दृष्टिकोण है<ref>{{Cite web|url=https://cth.altocumulus.org/~hallgren/Thesis/fudgets_thesis_color.pdf|title=Fudgets – Purely Functional Processes with applications to Graphical User Interfaces|first1=Magnus|last1=Carlsson|first2=Thomas|last2=Hallgren|year=1998|archive-url=https://web.archive.org/web/20221015141447/https://cth.altocumulus.org/~hallgren/Thesis/fudgets_thesis_color.pdf|archive-date=2022-10-15|url-status=live}}</ref> और, अधिक सामान्यतः, मोनाडिक स्ट्रीम फ़ंक्शंस।<ref>{{Citation |date=July 2016 | first1 = Ivan | last1 = Perez | first2 = Manuel | last2 = Barenz | first3 = Henrik | last3 = Nilsson | url = http://www.cs.nott.ac.uk/~psxip1/papers/2016-HaskellSymposium-Perez-Barenz-Nilsson-FRPRefactored-short.pdf | contribution = Functional Reactive Programming, Refactored | title = Haskell Symposium}}.</ref>
*नवीन दृष्टिकोण यह है कि कार्यों को अभी (आईओ मोनड में) चलाने की अनुमति दी जाए किन्तु उनके परिणामों की प्राप्ति को पश्चात तक के लिए अस्वीकृत कर दिया जाए।<ref>{{Cite web |url=http://www.cse.chalmers.se/~atze/papers/prprfrp.pdf |title=व्यावहारिक सैद्धांतिक एफआरपी|author1=Atze van der Ploeg |first2=Koen |last2=Claessen |access-date=2015-07-24 |archive-url=https://web.archive.org/web/20150701030428/http://www.cse.chalmers.se/~atze/papers/prprfrp.pdf |archive-date=2015-07-01 |url-status=dead }}</ref> यह इवेंट एवं आईओ मोनैड के मध्य इंटरैक्शन का उपयोग करता है, एवं अधिक अभिव्यक्ति-उन्मुख एफआरपी के साथ संगत है:
*नया तरीका यह है कि कार्रवाइयों को अभी (आईओ मोनड में) चलाने की अनुमति दी जाए लेकिन उनके परिणामों की प्राप्ति को बाद तक के लिए टाल दिया जाए।<ref>{{Cite web |url=http://www.cse.chalmers.se/~atze/papers/prprfrp.pdf |title=व्यावहारिक सैद्धांतिक एफआरपी|author1=Atze van der Ploeg |first2=Koen |last2=Claessen |access-date=2015-07-24 |archive-url=https://web.archive.org/web/20150701030428/http://www.cse.chalmers.se/~atze/papers/prprfrp.pdf |archive-date=2015-07-01 |url-status=dead }}</ref> यह इवेंट और IO मोनैड के बीच इंटरैक्शन का उपयोग करता है, और अधिक अभिव्यक्ति-उन्मुख FRP के साथ संगत है:
{{sxhl|2=elm|
{{sxhl|2=elm|
  planNow :: Event (IO a) -> IO (Event a)
  planNow :: Event (IO a) -> IO (Event a)
}}
}}


== कार्यान्वयन मुद्दे ==
== कार्यान्वयन विषय ==


एफआरपी सिस्टम दो प्रकार के होते हैं, पुश-आधारित और पुल-आधारित। पुश-आधारित प्रणालियाँ घटनाएँ लेती हैं और परिणाम प्राप्त करने के लिए उन्हें सिग्नल नेटवर्क के माध्यम से धकेलती हैं। पुल-आधारित प्रणालियाँ परिणाम की मांग होने तक प्रतीक्षा करती हैं, और मांगे गए मूल्य को पुनः प्राप्त करने के लिए नेटवर्क के माध्यम से पीछे की ओर काम करती हैं।
एफआरपी सिस्टम दो प्रकार के होते हैं, पुश-आधारित एवं पुल-आधारित हैं। पुश-आधारित सिस्टम इवेंट्स लेती हैं एवं परिणाम प्राप्त करने के लिए उन्हें सिग्नल नेटवर्क के माध्यम से पुश करती हैं। पुल-आधारित सिस्टम परिणाम की आवश्यकता होने तक प्रतीक्षा करती हैं, एवं आग्रह किए गए मूल्य को पुनः प्राप्त करने के लिए नेटवर्क के माध्यम से पीछे की ओर कार्य करती हैं।


कुछ एफआरपी सिस्टम जैसे कि याम्पा सैंपलिंग का उपयोग करते हैं, जहां सिग्नल नेटवर्क द्वारा नमूने खींचे जाते हैं। इस दृष्टिकोण में एक खामी है: नेटवर्क को इनपुट में परिवर्तन के बारे में पता लगाने के लिए एक गणना चरण की अवधि तक इंतजार करना पड़ता है। नमूनाकरण पुल-आधारित एफआरपी का एक उदाहरण है।
कुछ एफआरपी सिस्टम जैसे कि याम्पा सैंपलिंग का उपयोग करते हैं, जहां सिग्नल नेटवर्क द्वारा प्रारूप का चित्रण किया जाते हैं। इस दृष्टिकोण में अभाव है कि नेटवर्क को इनपुट में परिवर्तन के विषय में ज्ञात करने के लिए गणना चरण की अवधि तक प्रतीक्षा करना पड़ता है। सैंपलिंग पुल-आधारित एफआरपी का उदाहरण है।


[[हैकेज]] पर रिएक्टिव और एटेज लाइब्रेरी ने पुश-पुल एफआरपी नामक एक दृष्टिकोण पेश किया। इस दृष्टिकोण में, केवल जब विशुद्ध रूप से परिभाषित स्ट्रीम पर अगली घटना (जैसे समय के साथ निश्चित घटनाओं की सूची) की मांग की जाती है, तो उस घटना का निर्माण किया जाता है। ये विशुद्ध रूप से परिभाषित धाराएँ हास्केल में आलसी सूचियों की तरह काम करती हैं। वह पुल-आधारित आधा है। पुश-आधारित आधे का उपयोग तब किया जाता है जब सिस्टम के बाहर की घटनाओं को लाया जाता है। बाहरी घटनाओं को उपभोक्ताओं तक पहुंचाया जाता है, ताकि वे किसी घटना के जारी होते ही उसके बारे में पता लगा सकें।
[[हैकेज]] पर रि्टिव एवं एटेज लाइब्रेरी ने पुश-पुल एफआरपी नामक दृष्टिकोण प्रस्तुत किया। इस दृष्टिकोण में, केवल जब विशुद्ध रूप से परिभाषित स्ट्रीम पर अग्रिम इवेंट (जैसे समय के साथ निश्चित इवेंट की सूची) का अनुरोध किया जाता है, तो उस इवेंट का निर्माण किया जाता है। ये विशुद्ध रूप से परिभाषित धाराएँ हास्केल में लेजी सूचियों के जैसे कार्य करती हैं। वह पुल-आधारित अर्ध है। पुश-आधारित अर्ध का उपयोग तब किया जाता है जब सिस्टम के बाहर के इवेंट को लाया जाता है। बाहरी इवेंट को उपभोक्ताओं तक पहुंचाया जाता है, जिससे वे किसी इवेंट के प्रारम्भ होते ही उसके विषय में ज्ञात कर सकते हैं।


== कार्यान्वयन ==
== कार्यान्वयन ==
* याम्पा एसडीएल, एसडीएल2, ओपनजीएल और एचटीएमएल डोम समर्थन के साथ एक तीरांकित, कुशल, शुद्ध [[हास्केल (प्रोग्रामिंग भाषा)]] कार्यान्वयन है।
* याम्पा एसडीएल, एसडीएल 2, ओपनजीएल एवं एचटीएमएल डोम समर्थन के साथ तीरांकित, कुशल, त्रुटिहीन [[हास्केल (प्रोग्रामिंग भाषा)|हास्केल (प्रोग्रामिंग लैंग्वेज)]] कार्यान्वयन है।
* प्रोग्रामिंग भाषा एल्म (प्रोग्रामिंग भाषा) का उपयोग एफआरपी का समर्थन करने के लिए किया जाता है <ref>{{Citation | first = Evan | last = Czaplicki | url = https://www.seas.harvard.edu/sites/default/files/files/archived/Czaplicki.pdf | title = Elm: Concurrent FRP for Functional GUIs | date = Apr 2012 | place = Harvard | type = thesis | access-date = 2015-02-17 | archive-url = https://web.archive.org/web/20160604000246/http://www.seas.harvard.edu/sites/default/files/files/archived/Czaplicki.pdf | archive-date = 2016-06-04 | url-status = dead }}.</ref> लेकिन तब से इसे एक अलग पैटर्न से बदल दिया गया है।<ref>{{cite web |last1=Czaplicki |first1=Evan |title=एफआरपी को विदाई|url=http://elm-lang.org/blog/farewell-to-frp |website=elm |access-date=14 July 2018 |ref=farewell-to-frp}}</ref>
* प्रोग्रामिंग लैंग्वेज एल्म (प्रोग्रामिंग लैंग्वेज) का उपयोग एफआरपी का समर्थन करने के लिए किया जाता है <ref>{{Citation | first = Evan | last = Czaplicki | url = https://www.seas.harvard.edu/sites/default/files/files/archived/Czaplicki.pdf | title = Elm: Concurrent FRP for Functional GUIs | date = Apr 2012 | place = Harvard | type = thesis | access-date = 2015-02-17 | archive-url = https://web.archive.org/web/20160604000246/http://www.seas.harvard.edu/sites/default/files/files/archived/Czaplicki.pdf | archive-date = 2016-06-04 | url-status = dead }}.</ref> किन्तु तब से इसे भिन्न पैटर्न से बदल दिया गया है।<ref>{{cite web |last1=Czaplicki |first1=Evan |title=एफआरपी को विदाई|url=http://elm-lang.org/blog/farewell-to-frp |website=elm |access-date=14 July 2018 |ref=farewell-to-frp}}</ref>
* रिफ्लेक्स [[वेब ब्राउज़र]]/[[ दस्तावेज़ ऑब्जेक्ट मॉडल ]], [[ सरल डायरेक्टमीडिया परत ]] और ग्लॉस के लिए होस्ट के साथ हास्केल में एक कुशल पुश/पुल एफआरपी कार्यान्वयन है।
* रिफ्लेक्स [[वेब ब्राउज़र]]/[[ दस्तावेज़ ऑब्जेक्ट मॉडल |डीओएम]], [[ सरल डायरेक्टमीडिया परत |सरल डायरेक्टमीडिया परत]] एवं ग्लॉस के लिए होस्ट के साथ हास्केल में कुशल पुश/पुल एफआरपी कार्यान्वयन है।
* प्रतिक्रियाशील-केला हास्केल में एक लक्ष्य-अज्ञेयवादी पुश एफआरपी कार्यान्वयन है।
* रिएक्टिव-केला हास्केल में टारगेट-एगनोस्टिक पुश एफआरपी कार्यान्वयन है।
* नेटवायर और वैरिंजिंग को तीरांकित किया गया है, हास्केल में एफआरपी कार्यान्वयन को खींचें।
* नेटवायर एवं वैरिंजिंग को तीरांकित किया गया है, हास्केल में एफआरपी कार्यान्वयन को चित्रित करते है।
* [[फ्लैपजैक्स]] [[जावास्क्रिप्ट]] में एक व्यवहार/घटना एफआरपी कार्यान्वयन है।
* [[फ्लैपजैक्स]] [[जावास्क्रिप्ट]] में बिहेवियर/इवेंट एफआरपी कार्यान्वयन है।
* रिएक्ट कार्यात्मक प्रतिक्रियाशील प्रोग्रामिंग के लिए एक [[OCaml]] मॉड्यूल है।
* रिएक्ट फंक्शनल रिएक्टिव प्रोग्रामिंग के लिए [[OCaml|ओकैमल]] मॉड्यूल है।
* सोडियम एक पुश एफआरपी कार्यान्वयन है जो जावा, टाइपस्क्रिप्ट और सी# जैसी कई प्रोग्रामिंग भाषाओं के लिए एक विशिष्ट यूआई फ्रेमवर्क से स्वतंत्र है।
* सोडियम पुश एफआरपी कार्यान्वयन है जो जावा, टाइपस्क्रिप्ट एवं सी# जैसी कई प्रोग्रामिंग लैंग्वेजोंं के लिए विशिष्ट यूआई फ्रेमवर्क से स्वतंत्र है।
* डुनाई [[मोनाडिक स्ट्रीम फ़ंक्शंस]] का उपयोग करके हास्केल में एक तेज़ कार्यान्वयन है जो क्लासिक और एरोवाइज़्ड एफआरपी का समर्थन करता है।
* डुनाई [[मोनाडिक स्ट्रीम फ़ंक्शंस]] का उपयोग करके हास्केल में तेज़ कार्यान्वयन है जो क्लासिक एवं एरोवाइज़्ड एफआरपी का समर्थन करता है।
* ऑब्जर्वेबलकंप्यूटेशंस, एक क्रॉस-प्लेटफ़ॉर्म .NET कार्यान्वयन।
* ऑब्जर्वेबलकंप्यूटेशंस, क्रॉस-प्लेटफ़ॉर्म .नेट कार्यान्वयन है।
* स्टेला एक अभिनेता-आधारित प्रतिक्रियाशील प्रोग्रामिंग भाषा है जो अभिनेताओं और रिएक्टरों के एक मॉडल को प्रदर्शित करती है जिसका उद्देश्य प्रतिक्रियाशील कोड के साथ अनिवार्य कोड के संयोजन के मुद्दों से बचना है (उन्हें अभिनेताओं और रिएक्टरों में अलग करके)।<ref name="stella">{{Citation | url = https://drops.dagstuhl.de/opus/volltexte/2020/13176/ | first1 = Sam | last1 = Van den Vonder | first2 = Thierry | last2 = Renaux | first3 = Bjarno | last3 = Oeyen | first4 = Joeri | last4 = De Koster | first5 = Wolfgang | last5 = De Meuter | contribution = Tackling the Awkward Squad for Reactive Programming: The Actor-Reactor Model | title = Leibniz International Proceedings in Informatics (LIPIcs) | volume = 166 | year = 2020 | pages = 19:1–19:29 | doi = 10.4230/LIPIcs.ECOOP.2020.19| isbn = 9783959771542 }}.</ref> अभिनेता वितरित प्रतिक्रियाशील प्रणालियों में उपयोग के लिए उपयुक्त हैं।<ref name="stella2">{{Citation | url = https://programming-journal.org/2022/6/14/ | first1 = Sam | last1 = Van den Vonder | first2 = Thierry | last2 = Renaux | first3 = Wolfgang | last3 = De Meuter | contribution = Topology-Level Reactivity in Distributed Reactive Programs: Reactive Acquaintance Management using Flocks | title = The Art, Science, and Engineering of Programming | volume = 6:3 | year = 2022 | issue = 3 | pages = 14:1–14:36 | doi = 10.22152/programming-journal.org/2022/6/14 | s2cid = 246979565 }}</ref>
* स्टेला अभिनेता-आधारित रिएक्टिव प्रोग्रामिंग लैंग्वेज है जो अभिनेताओं एवं रिएक्टरों के मॉडल को प्रदर्शित करती है जिसका उद्देश्य रिएक्टिव कोड के साथ अनिवार्य कोड के संयोजन के विषयों से बचना है (उन्हें अभिनेताओं एवं रि्टरों में भिन्न करके)।<ref name="stella">{{Citation | url = https://drops.dagstuhl.de/opus/volltexte/2020/13176/ | first1 = Sam | last1 = Van den Vonder | first2 = Thierry | last2 = Renaux | first3 = Bjarno | last3 = Oeyen | first4 = Joeri | last4 = De Koster | first5 = Wolfgang | last5 = De Meuter | contribution = Tackling the Awkward Squad for Reactive Programming: The Actor-Reactor Model | title = Leibniz International Proceedings in Informatics (LIPIcs) | volume = 166 | year = 2020 | pages = 19:1–19:29 | doi = 10.4230/LIPIcs.ECOOP.2020.19| isbn = 9783959771542 }}.</ref> अभिनेता वितरित रिएक्टिव सिस्टम में उपयोग के लिए उपयुक्त हैं।<ref name="stella2">{{Citation | url = https://programming-journal.org/2022/6/14/ | first1 = Sam | last1 = Van den Vonder | first2 = Thierry | last2 = Renaux | first3 = Wolfgang | last3 = De Meuter | contribution = Topology-Level Reactivity in Distributed Reactive Programs: Reactive Acquaintance Management using Flocks | title = The Art, Science, and Engineering of Programming | volume = 6:3 | year = 2022 | issue = 3 | pages = 14:1–14:36 | doi = 10.22152/programming-journal.org/2022/6/14 | s2cid = 246979565 }}</ref>
*[[ज्वारीयचक्र]] संगीत पैटर्न के लिए एक शुद्ध एफआरपी डोमेन विशिष्ट भाषा है, जो हास्केल (प्रोग्रामिंग भाषा) प्रोग्रामिंग भाषा में एम्बेडेड है।
*[[ज्वारीयचक्र]] संगीत पैटर्न के लिए त्रुटिहीन एफआरपी डोमेन विशिष्ट लैंग्वेज है, जो हास्केल प्रोग्रामिंग लैंग्वेज में एम्बेडेड है।
 
यह ध्यान देने योग्य है कि [[रिएक्टिवएक्स]], अपने जावास्क्रिप्ट कार्यान्वयन आरएक्सजेएस द्वारा लोकप्रिय है, कार्यात्मक और प्रतिक्रियाशील है लेकिन कार्यात्मक प्रतिक्रियाशील प्रोग्रामिंग से अलग है।<ref>{{cite web |url=https://reactivex.io/intro.html |title=रिएक्टिवएक्स|website=ReactiveX.io |access-date=July 3, 2022}}</ref>


यह ध्यान देने योग्य है कि [[रिएक्टिवएक्स|रिएक्टिव एक्स]], अपने जावास्क्रिप्ट कार्यान्वयन आर्सजेएस द्वारा लोकप्रिय है, फंक्शनल एवं रिएक्टिव है किन्तु फंक्शनल रिएक्टिव प्रोग्रामिंग से भिन्न है।<ref>{{cite web |url=https://reactivex.io/intro.html |title=रिएक्टिवएक्स|website=ReactiveX.io |access-date=July 3, 2022}}</ref>


== यह भी देखें ==
== यह भी देखें ==
* [[वृद्धिशील कंप्यूटिंग]]
* [[वृद्धिशील कंप्यूटिंग|इंक्रीमेंटल कंप्यूटिंग]]
* [[स्ट्रीम प्रोसेसिंग]]
* [[स्ट्रीम प्रोसेसिंग]]


Line 65: Line 61:
{{Reflist |32em}}
{{Reflist |32em}}


{{DEFAULTSORT:Functional reactive programming}}[[Category: कार्यात्मक प्रोग्रामिंग]] [[Category: मूल्यांकन रणनीति]]
{{DEFAULTSORT:Functional reactive programming}}
 
 


[[Category: Machine Translated Page]]
[[Category:Created On 24/07/2023|Functional reactive programming]]
[[Category:Created On 24/07/2023]]
[[Category:Machine Translated Page|Functional reactive programming]]
[[Category:Pages with script errors|Functional reactive programming]]
[[Category:Templates Vigyan Ready|Functional reactive programming]]
[[Category:कार्यात्मक प्रोग्रामिंग|Functional reactive programming]]
[[Category:मूल्यांकन रणनीति|Functional reactive programming]]

Latest revision as of 12:47, 8 September 2023

फंक्शनल रिएक्टिव प्रोग्रामिंग (एफआरपी) फंक्शनल प्रोग्रामिंग के बिल्डिंग ब्लॉक्स जैसे मैप, फोल्ड, फ़िल्टर का उपयोग करके रिएक्टिव प्रोग्रामिंग (एसिंक्रोनस डेटाफ्लो प्रोग्रामिंग) के लिए प्रोग्रामिंग प्रतिमान है। एफआरपी का उपयोग ग्राफिकल यूज़र इंटरफ़ेस (जीयूआई), रोबोटिक्स, गेम्स एवं संगीत प्रोग्रामिंग के लिए किया गया है, जिसका लक्ष्य स्पष्ट रूप से मॉडलिंग समय द्वारा इन कठिनाइयों को सरल बनाना है।

एफआरपी का सूत्रीकरण

फंक्शनल रिएक्टिव प्रोग्रामिंग का मूल सूत्रीकरण कॉनल इलियट एवं पॉल हुडक द्वारा लिखित ICFP 97 पेपर फंक्शनल रिएक्टिव एनीमेशन में प्राप्त किया जा सकता है।[1]1997 में अपनी प्रारम्भ के पश्चात से एफआरपी ने कई रूप ले लिए हैं। विविधता की धुरी असतत विरुद्ध निरंतर शब्दार्थ है। अन्य धुरी यह है कि एफआरपी सिस्टम को गतिशील रूप से कैसे परिवर्तित किया जा सकता है।[2]

निरंतर

एफआरपी के प्रारम्भी सूत्रीकरण में निरंतर शब्दार्थ का उपयोग किया गया था, जिसका लक्ष्य कई परिचालन विवरणों का सार निकालना था जो किसी प्रोग्राम के अर्थ के लिए महत्वपूर्ण नहीं हैं।[3] इस फॉर्मूलेशन के प्रमुख गुण हैं:

  • मॉडलिंग मूल्य जो निरंतर समय के साथ परिवर्तित होते रहते हैं, उन्हें बिहेवियर एवं पश्चात के संकेत कहा जाता है।
  • इवेंट (कंप्यूटिंग) की मॉडलिंग जो समय में भिन्न-भिन्न बिंदुओं पर घटित होते हैं।
  • सिस्टम को इवेंट की प्रतिक्रिया में परिवर्तित किया जा सकता है, जिसे सामान्यतः स्विचिंग कहा जाता है।
  • रिएक्टिव मॉडल से सैंपलिंग दर जैसे मूल्यांकन विवरण को भिन्न करना है।

साइड-इफेक्ट मुक्त लैंग्वेजोंं में एफआरपी का यह सिमेंटिक मॉडल सामान्यतः निरंतर कार्यों के संदर्भ में है, एवं समय के साथ है।[4] इस फॉर्मूलेशन को डिनोटेटिव कंटीन्यूअस टाइम प्रोग्रामिंग (डीसीपीटी) भी कहा जाता है।[5]

असतत

इवेंट-संचालित एफआरपी एवं 0.17 से पूर्व एल्म (प्रोग्रामिंग लैंग्वेज) के संस्करणों जैसे फॉर्मूलेशन के लिए आवश्यक है कि अपडेट भिन्न-भिन्न एवं इवेंट-संचालित हों।[6] इन फॉर्मूलेशनों ने व्यावहारिक एफआरपी पर जोर दिया है, जिसमें शब्दार्थ पर ध्यान केंद्रित किया गया है जिसमें सरल एपीआई है जिसे रोबोटिक्स या वेब-ब्राउज़र जैसी सेटिंग में कुशलतापूर्वक प्रस्तावित किया जा सकता है।[7]इन फॉर्मूलेशन में, यह सामान्य है कि बिहेवियर एवं इवेंट के विचारों को ऐसे संकेतों में संयोजित किया जाता है जिनका सदैव वर्तमान मूल्य होता है, किन्तु वे भिन्न-भिन्न रूप से परिवर्तित होते हैं।[8]

इंटरैक्टिव एफआरपी

यह बताया गया है कि सामान्य एफआरपी मॉडल, इनपुट से आउटपुट तक, इंटरैक्टिव प्रोग्रामों के लिए त्रुटिपूर्ण रूप से अनुकूल है।[9] इनपुट से आउटपुट तक मैपिंग के अन्दर प्रोग्राम चलाने की क्षमता में अभाव का तात्पर्य निम्नलिखित समाधानों में से एक का उपयोग करना हो सकता है:

  • क्रियाओं की डेटा संरचना बनाएं जो आउटपुट के रूप में प्रदर्शित होते हैं। क्रियाएँ किसी बाहरी इंटरप्रेटर या परिवेश द्वारा चलायी जानी चाहिए। इसमें हास्केल की मूल स्ट्रीम इनपुट/आउटपुट सिस्टम की सभी कठिनाइयाँ विरासत में मिली हैं।[10]
  • एरोइज्ड एफआरपी एवं एम्बेड एरो का उपयोग करें जो कार्य करने में सक्षम हैं। क्रियाओं में पहचान भी हो सकती है, जो उन्हें उदाहरण के लिए भिन्न-भिन्न परिवर्तनशील स्टोर बनाए रखने की अनुमति देती है। यह फ़जेट्स लाइब्रेरी एवं मोनाडिक स्ट्रीम फ़ंक्शंसद्वारा अपनाया गया दृष्टिकोण है।[11][12]
  • नवीन दृष्टिकोण यह है कि कार्यों को अभी (आईओ मोनड में) चलाने की अनुमति दी जाए किन्तु उनके परिणामों की प्राप्ति को पश्चात तक के लिए अस्वीकृत कर दिया जाए।[13] यह इवेंट एवं आईओ मोनैड के मध्य इंटरैक्शन का उपयोग करता है, एवं अधिक अभिव्यक्ति-उन्मुख एफआरपी के साथ संगत है:
 planNow :: Event (IO a) -> IO (Event a)

कार्यान्वयन विषय

एफआरपी सिस्टम दो प्रकार के होते हैं, पुश-आधारित एवं पुल-आधारित हैं। पुश-आधारित सिस्टम इवेंट्स लेती हैं एवं परिणाम प्राप्त करने के लिए उन्हें सिग्नल नेटवर्क के माध्यम से पुश करती हैं। पुल-आधारित सिस्टम परिणाम की आवश्यकता होने तक प्रतीक्षा करती हैं, एवं आग्रह किए गए मूल्य को पुनः प्राप्त करने के लिए नेटवर्क के माध्यम से पीछे की ओर कार्य करती हैं।

कुछ एफआरपी सिस्टम जैसे कि याम्पा सैंपलिंग का उपयोग करते हैं, जहां सिग्नल नेटवर्क द्वारा प्रारूप का चित्रण किया जाते हैं। इस दृष्टिकोण में अभाव है कि नेटवर्क को इनपुट में परिवर्तन के विषय में ज्ञात करने के लिए गणना चरण की अवधि तक प्रतीक्षा करना पड़ता है। सैंपलिंग पुल-आधारित एफआरपी का उदाहरण है।

हैकेज पर रि्टिव एवं एटेज लाइब्रेरी ने पुश-पुल एफआरपी नामक दृष्टिकोण प्रस्तुत किया। इस दृष्टिकोण में, केवल जब विशुद्ध रूप से परिभाषित स्ट्रीम पर अग्रिम इवेंट (जैसे समय के साथ निश्चित इवेंट की सूची) का अनुरोध किया जाता है, तो उस इवेंट का निर्माण किया जाता है। ये विशुद्ध रूप से परिभाषित धाराएँ हास्केल में लेजी सूचियों के जैसे कार्य करती हैं। वह पुल-आधारित अर्ध है। पुश-आधारित अर्ध का उपयोग तब किया जाता है जब सिस्टम के बाहर के इवेंट को लाया जाता है। बाहरी इवेंट को उपभोक्ताओं तक पहुंचाया जाता है, जिससे वे किसी इवेंट के प्रारम्भ होते ही उसके विषय में ज्ञात कर सकते हैं।

कार्यान्वयन

  • याम्पा एसडीएल, एसडीएल 2, ओपनजीएल एवं एचटीएमएल डोम समर्थन के साथ तीरांकित, कुशल, त्रुटिहीन हास्केल (प्रोग्रामिंग लैंग्वेज) कार्यान्वयन है।
  • प्रोग्रामिंग लैंग्वेज एल्म (प्रोग्रामिंग लैंग्वेज) का उपयोग एफआरपी का समर्थन करने के लिए किया जाता है [14] किन्तु तब से इसे भिन्न पैटर्न से बदल दिया गया है।[15]
  • रिफ्लेक्स वेब ब्राउज़र/डीओएम, सरल डायरेक्टमीडिया परत एवं ग्लॉस के लिए होस्ट के साथ हास्केल में कुशल पुश/पुल एफआरपी कार्यान्वयन है।
  • रिएक्टिव-केला हास्केल में टारगेट-एगनोस्टिक पुश एफआरपी कार्यान्वयन है।
  • नेटवायर एवं वैरिंजिंग को तीरांकित किया गया है, हास्केल में एफआरपी कार्यान्वयन को चित्रित करते है।
  • फ्लैपजैक्स जावास्क्रिप्ट में बिहेवियर/इवेंट एफआरपी कार्यान्वयन है।
  • रिएक्ट फंक्शनल रिएक्टिव प्रोग्रामिंग के लिए ओकैमल मॉड्यूल है।
  • सोडियम पुश एफआरपी कार्यान्वयन है जो जावा, टाइपस्क्रिप्ट एवं सी# जैसी कई प्रोग्रामिंग लैंग्वेजोंं के लिए विशिष्ट यूआई फ्रेमवर्क से स्वतंत्र है।
  • डुनाई मोनाडिक स्ट्रीम फ़ंक्शंस का उपयोग करके हास्केल में तेज़ कार्यान्वयन है जो क्लासिक एवं एरोवाइज़्ड एफआरपी का समर्थन करता है।
  • ऑब्जर्वेबलकंप्यूटेशंस, क्रॉस-प्लेटफ़ॉर्म .नेट कार्यान्वयन है।
  • स्टेला अभिनेता-आधारित रिएक्टिव प्रोग्रामिंग लैंग्वेज है जो अभिनेताओं एवं रिएक्टरों के मॉडल को प्रदर्शित करती है जिसका उद्देश्य रिएक्टिव कोड के साथ अनिवार्य कोड के संयोजन के विषयों से बचना है (उन्हें अभिनेताओं एवं रि्टरों में भिन्न करके)।[16] अभिनेता वितरित रिएक्टिव सिस्टम में उपयोग के लिए उपयुक्त हैं।[17]
  • ज्वारीयचक्र संगीत पैटर्न के लिए त्रुटिहीन एफआरपी डोमेन विशिष्ट लैंग्वेज है, जो हास्केल प्रोग्रामिंग लैंग्वेज में एम्बेडेड है।

यह ध्यान देने योग्य है कि रिएक्टिव एक्स, अपने जावास्क्रिप्ट कार्यान्वयन आर्सजेएस द्वारा लोकप्रिय है, फंक्शनल एवं रिएक्टिव है किन्तु फंक्शनल रिएक्टिव प्रोग्रामिंग से भिन्न है।[18]

यह भी देखें

संदर्भ

  1. Elliott, Conal; Hudak, Paul. "कार्यात्मक प्रतिक्रियाशील एनिमेशन". कार्यात्मक प्रतिक्रियाशील एनिमेशन. ICFP ’97. Retrieved 14 July 2018.
  2. Nilsson, Henrik; Courtney, Antony; Peterson, John (Feb 2011) [2002], "Functional Reactive Programming, Continued", Haskell Workshop (PDF).
  3. Elliott, Conal; Hudak, Paul (1997), "Functional Reactive Animation", ICFP.
  4. Courtney, Antony; Elliott, Conal (Feb 2011) [2001], "Genuinely Functional User Interfaces", Haskell Workshop, Yale.
  5. Elliot, Conal (2014), "Denotational Design" (PDF), LambdaJam, retrieved 5 May 2023
  6. Taha, Walid; Wan, Zhanyong; Hudak, Paul (2002), "Event-Driven FRP", PADL (PDF), Yale, archived from the original (PDF) on 2013-09-28, retrieved 2013-09-23.
  7. Czaplicki, Evan; Chong, Stephen (2013), "Asynchronous Functional Reactive Programming for GUIs", PLDI, Harvard.
  8. Wan, Zhanyong; Taha, Walid; Hudak, Paul (Feb 2011), "Real-Time FRP", ICFP (PDF), archived from the original (PDF) on 2013-09-28, retrieved 2013-09-23.
  9. "Conal Elliott » Why classic FRP does not fit interactive behavior". December 9, 2008. Archived from the original on 2022-10-12.
  10. Borning, Alan. "I/O in Purely Functional Languages" (PDF). Archived (PDF) from the original on 2022-04-28.
  11. Carlsson, Magnus; Hallgren, Thomas (1998). "Fudgets – Purely Functional Processes with applications to Graphical User Interfaces" (PDF). Archived (PDF) from the original on 2022-10-15.
  12. Perez, Ivan; Barenz, Manuel; Nilsson, Henrik (July 2016), "Functional Reactive Programming, Refactored", Haskell Symposium (PDF).
  13. Atze van der Ploeg; Claessen, Koen. "व्यावहारिक सैद्धांतिक एफआरपी" (PDF). Archived from the original (PDF) on 2015-07-01. Retrieved 2015-07-24.
  14. Czaplicki, Evan (Apr 2012), Elm: Concurrent FRP for Functional GUIs (PDF) (thesis), Harvard, archived from the original (PDF) on 2016-06-04, retrieved 2015-02-17{{citation}}: CS1 maint: location missing publisher (link).
  15. Czaplicki, Evan. "एफआरपी को विदाई". elm. Retrieved 14 July 2018.
  16. Van den Vonder, Sam; Renaux, Thierry; Oeyen, Bjarno; De Koster, Joeri; De Meuter, Wolfgang (2020), "Tackling the Awkward Squad for Reactive Programming: The Actor-Reactor Model", Leibniz International Proceedings in Informatics (LIPIcs), vol. 166, pp. 19:1–19:29, doi:10.4230/LIPIcs.ECOOP.2020.19, ISBN 9783959771542.
  17. Van den Vonder, Sam; Renaux, Thierry; De Meuter, Wolfgang (2022), "Topology-Level Reactivity in Distributed Reactive Programs: Reactive Acquaintance Management using Flocks", The Art, Science, and Engineering of Programming, vol. 6:3, pp. 14:1–14:36, doi:10.22152/programming-journal.org/2022/6/14, S2CID 246979565
  18. "रिएक्टिवएक्स". ReactiveX.io. Retrieved July 3, 2022.