20

एफआरपी को लागू करने के साथ चारों ओर घूमते समय मुझे लगता है कि भ्रमित है अतीत के साथ क्या करना है? असल में, मेरी समझ यह थी कि मैं किसी भी बिंदु पर एक व्यवहार के साथ ऐसा करने में सक्षम हो जाएगा:क्या हम एफआरपी में 'अतीत' की परवाह करते हैं?

val beh = Stepper(0, event) // stepwise behaviour 

:

beh.at(x) // where time x < now 

यह है कि यह इस जैसे समस्याग्रस्त प्रदर्शन के एक मामले में बुद्धिमान हो सकता है लगता है यहां हम देख सकते हैं कि अतीत में व्यवहार का मूल्यांकन करने के लिए हमें सभी घटनाओं को रखने की आवश्यकता है और जब भी हम नमूना करते हैं तो हम रैखिक स्कैन प्रदर्शन (अंत में) खत्म कर देंगे।

क्या हम इस क्षमता को उपलब्ध कराने की इच्छा रखते हैं या व्यवहारकर्ताओं को केवल एक समय में मूल्यांकन करने की अनुमति दी जानी चाहिए = = अब? क्या हम प्रोग्रामर को at फ़ंक्शन का खुलासा भी करना चाहते हैं?

+1

यह हास्केल क्यों टैग किया गया है लेकिन स्कैला वाक्यविन्यास का उपयोग क्यों किया जाता है? आखिरकार, मुझे लगता है कि सवाल भाषा-अज्ञेयवादी है :-) – Bergi

उत्तर

20

जबकि व्यवहार को समय का कार्य माना जाता है, एफआरपी में पिछले डेटा की मनमानी मात्रा पर निर्भरता एक बुरी बात है, और इसे समय रिसाव के रूप में जाना जाता है। यही है, व्यवहारों में परिवर्तन आमतौर पर स्ट्रीमिंग/प्रतिक्रियाशील होना चाहिए कि वे अतीत की सीमा से अधिक पर भरोसा नहीं करते हैं (और इतिहास स्पष्ट रूप से) के इस ज्ञान को जमा करना चाहिए।

तो, नहीं, at वास्तविक एफआरपी सिस्टम में वांछनीय नहीं है: अतीत या भविष्य को देखना संभव नहीं होना चाहिए। (बाद जाहिर है, है असंभव, अगर भविष्य के राज्य कुछ भी एफआरपी व्यवस्था करने के लिए बाहरी पर निर्भर करता है।)

बेशक

, इस समस्या यह है कि केवल सटीक वर्तमान को देखने के लिए सक्षम किया जा रहा करने के लिए सुराग व्यवहार को बदलने के लिए फ़ंक्शन लिखते समय आप क्या कर सकते हैं, गंभीर रूप से प्रतिबंधित करता है: Behaviour a -> Behaviour ba -> b जैसा ही बन जाता है, जो कई चीजें बनाता है जो हम असंभव करना चाहते हैं। लेकिन यह किसी और चीज की तुलना में एफआरपी की लगातार समस्याओं में से एक अर्थशास्त्र खोजने का एक मुद्दा है; जब तक आप प्रदान किए गए व्यवहारों पर आदिम परिवर्तन समय के रिसाव के बिना पर्याप्त शक्तिशाली होते हैं, सबकुछ ठीक होना चाहिए। इस पर अधिक जानकारी के लिए, Garbage collecting the semantics of FRP देखें।

+1

स्पष्ट होने के लिए: क्या आपका मतलब है कि हमें कभी भी व्यवहार के मूल्य की गणना करने में सक्षम होना चाहिए? मुझे लगता है कि यह बहुत समझ में आता है लेकिन मुझे वास्तव में यह समझने में कोनाल नहीं मिल रहा है ... – seadowg

+1

ठीक है, "एक विशिष्ट समय पर" व्यवहार के मूल्य की गणना करना कुछ ऐसा है जो कुछ एफआरपी सिस्टम द्वारा कवर नहीं किया जाता है; यह एफआरपी प्रणाली को बाहरी दुनिया से संबंधित करने का एक तरीका है। उदाहरण के लिए, हास्केल में, ऐसा फ़ंक्शन 'मान :: व्यवहार ए -> आईओ ए' हो सकता है। लेकिन अमूर्त में एफआरपी दुनिया में मौजूद नहीं है, जिसमें 'आईओ' नहीं है: क्योंकि व्यवहार की परिभाषा एक मूल्य है जो समय के साथ बदलती है, व्यवहार के वर्तमान मूल्य का प्रतिनिधित्व करने का एकमात्र तरीका है ... व्यवहार के साथ! – ehird

+0

लेकिन, जहां तक ​​एक अशुद्ध मेजबान भाषा में एक एफआरपी प्रणाली चमकती है, या तो किसी व्यवहार के मूल्य को प्राप्त करने के लिए कोई इंटरफ़ेस नहीं प्रदान करता है (आपको इसकी आवश्यकता नहीं हो सकती है), या वर्तमान में मूल्य प्राप्त करने के लिए केवल एक इंटरफ़ेस प्रदान करना समय, मेरे जवाब में उल्लिखित कारणों से, मेरे पास जाने का सबसे अच्छा तरीका प्रतीत होता है। मैंने जो कॉनल लिंक दिया था वह पिछले पैराग्राफ में मैंने जो अर्थपूर्ण मुद्दा छुआ था, वह सिर्फ था; इसमें इस मामले पर कोई सलाह नहीं है। – ehird

संबंधित मुद्दे