हां, एफपी का उपयोग उद्यम अनुप्रयोगों में किया जा सकता है। क्लोजर उद्यम में सफलता के साथ एफपी भाषा का एक उदाहरण है: http://cognitect.com/clojure#successstories
राज्य का प्रतिनिधित्व एफपी में एक चुनौती हो सकती है और एफपी को फिट करने के लिए प्रतिमानों को बदलना एक दिमागी ताना हो सकता है। कुछ एफपी भाषा पूरी तरह से साइड इफेक्ट को प्रभावित करती है और परिवर्तनशील स्थिति। क्लोजर दोनों की अनुमति देता है लेकिन उन प्रतिमानों को हतोत्साहित या अलग करता है।
संक्षेप में, राज्य प्रतिनिधित्व ओओ के समान हो सकता है। यह राज्य संशोधन है जो बहुत अलग है। उदाहरण के लिए, एफपी राज्य में सूचियों और मानचित्रों द्वारा प्रतिनिधित्व किया जा सकता है। कर्मचारियों की एक सूची इस तरह दिख सकती है:
[[name: "James Brown" address: "Barnwell, SC"]
[name: "Elvis Presley" address: "Tupelo, MS"]]
एफपी में राज्य संशोधन को संभालने के लिए मुझे दो तरीके हैं। एक कार्यात्मक प्रतिक्रियाशील प्रोग्रामिंग की तरह कुछ है। इस प्रतिमान में सभी राज्य को उच्चतम स्तर पर ही संभाला जाता है ... उदाहरण के लिए, आपके आवेदन के एक HTML दृश्य में राज्य है (जैसे व्यक्ति का नाम, पता, आदि)। अब जब आप "अपडेट नाम" पर क्लिक करते हैं, तो एक फ़ंक्शन को कहा जाता है जो वास्तव में नाम बदलने के अलावा नाम अपडेट के बारे में हर बात को संभालता है। यह अजीब लग सकता है ... लेकिन मेरे साथ सहन करें। फिर बदला हुआ नाम फ़ंक्शन द्वारा वापस आ जाएगा और दृश्य (या लगातार डेटा स्टोर, आदि) नया नाम दिखाएगा। या, वैकल्पिक रूप से, अद्यतन नाम के साथ एक पूरी नई संरचना वापस आ जाएगी। तो फ़ंक्शन क्या करता है? यह नाम मान्य करता है और नया नाम लौटाता है यदि यह वैध है, तो एक त्रुटि यदि यह नहीं है, और संभवतः अनुसरण करने के लिए एक नया दृश्य या नेविगेशन लिंक। नाम परिवर्तन की तुलना में कुछ अधिक जटिल के लिए यह बहुत अधिक कर सकता है।
तो FRP के लिए फ़ंक्शन द्वारा दी गई वस्तु नया राज्य है और इसे सीधे दृश्य में या उच्च स्तर पर जो भी हो, दिया जा सकता है। कुछ मामलों में FRP पूरे राज्य को फ़ंक्शन में ले जाता है और पूरे राज्य को वापस मिल जाता है।
इस प्रतिमान के साथ, कंटेनर या फ्रेमवर्क को डिस्प्ले, डेटाबेस, या जो भी नए राज्य से अपडेट करने की आवश्यकता है, के अपडेट को संभालने की आवश्यकता है। तो आप एक रूपरेखा की कल्पना कर सकते हैं जो स्क्रीन पर एप्लिकेशन को खींचता है। जब कोई उपयोगकर्ता क्लिक करता है तो कुछ फ़ंक्शन को लागू किया जाता है और नया राज्य वापस कर दिया जाता है। इसके बाद फ्रेमवर्क स्क्रीन को अपडेट करता है या तो सब कुछ रिड्यूस करता है या फिर डिस्प्ले के कुछ हिस्सों को रीडिवेलिंग करता है। Http://blog.getprismatic.com/om-sweet-om-high-functional-frontend-engineering-with-clojurescript-and-react/ देखें
क्लोजर दूसरे प्रतिमान का उपयोग करता है जिसे मैंने देखा है और वह राज्य परिवर्तनों को अलग करने के लिए है लेकिन जरूरी नहीं कि उन्हें उच्चतम स्तर तक ही सीमित रखा जाए। क्लोजर के साथ एक परमाणु, एजेंट या संदर्भ द्वारा सभी उत्परिवर्तनीय स्थिति को "आयोजित" (जब तक आप जावा वस्तुओं का उपयोग नहीं कर रहे हैं) होना चाहिए। जिस तरह से यह काम करता है वह वस्तु है जिसे एटम / एजेंट / रेफरी द्वारा आयोजित या संदर्भित (हालांकि आप इसे कॉल करना चाहते हैं) अपरिवर्तनीय है, लेकिन परमाणु / एजेंट / रेफ एक नई वस्तु को इंगित करने के लिए बदल सकता है। इस मामले में आप परमाणु / एजेंट / रेफरी पर विशेष विधियों का उपयोग करते हैं जो कहते हैं कि "इस तरह से ऐसा करने से वस्तु को अपडेट करें और परमाणु / एजेंट को फिर से असाइन करें / किसी नई वस्तु को देखें"।
यह क्यों फायदेमंद है जो आप पूछ सकते हैं? क्योंकि इन क्लोजर कंस्ट्रक्शंस द्वारा संदर्भित अपरिवर्तनीय ऑब्जेक्ट को एक फ़ंक्शन को पास किया जा सकता है जो कुछ करता है और जबकि वह फ़ंक्शन ऑब्जेक्ट के संदर्भ में चल रहा है, उसे बदलने की गारंटी नहीं है। यही है, परमाणु / एजेंट / रेफरी समारोह में पारित नहीं किया जाता है, लेकिन उनके द्वारा इंगित अपरिवर्तनीय वस्तु को पारित किया जाता है। परमाणुओं, एजेंटों, और refs में विशेष गुण होते हैं जो अद्यतन और संगामिति को उन तरीकों से संभालते हैं जो सुरक्षित हैं और भाषा का हिस्सा हैं। Http://clojure.org/state देखें
आशा है कि ये आपकी मदद करेगा। मेरा सुझाव है कि एफपी में कर्मचारियों और व्यक्तियों का प्रतिनिधित्व कैसे किया जा सकता है, इस बारे में बेहतर समझ पाने के लिए क्लोजर राज्य और एफआरपी के बारे में अधिक पढ़ें। हालाँकि, वास्तविक प्रतिनिधित्व ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग के समान होगा ... यह एक भिन्नता है जो वास्तव में अलग है।