2013-10-29 24 views
8

मैंने reactive-banana के दस्तावेज़ को खराब कर दिया है, और मुझे स्पष्ट समय देरी निर्दिष्ट करने का कोई तरीका नहीं मिल रहा है। कहें, उदाहरण के लिए, मैं Event t a लेना चाहता हूं और भविष्य में अपनी सभी घटनाओं को 1 सेकंड स्थानांतरित करना चाहता हूं; या एक घटना प्राप्त करें जो अब से 1 सेकंड तक आग लगती है (Moment t के भीतर); या ऐसा कुछ भी। प्रतिक्रियाशील केले में स्पष्ट देरी दिखाई दे रही है? यदि नहीं, तो उपयोगकर्ता कैसे कार्यान्वित करते हैं, उदाहरण के लिए, एक सेकंड द्वारा देरी इनपुट गूंजते हैं?प्रतिक्रियाशील-केला समय देरी

उत्तर

4

जैसा कि बेन इंगित करता है, यह सही है: प्रतिक्रियाशील-केले समय और देरी की कोई अंतर्निहित धारणा नहीं है।

मुख्य कारण यह है कि यह तर्कसंगत समय और वास्तविक समय की गारंटी देना मुश्किल है। क्या होता है जब किसी ईवेंट के तार्किक समय से पहले वास्तविक समय में माउस क्लिक होता है जिसे अभी तक गणना नहीं की जा सकती है, यानी जिसका असली समय इसके तार्किक समय के पीछे है?

हालांकि, बाहरी टाइमर ईवेंट का उपयोग कर समय के साथ निपटना अभी भी संभव है। Wave.hs उदाहरण पर एक नज़र डालें।

3

मैं किसी भी माध्यम से एक विशेषज्ञ नहीं हूं, लेकिन मैंने इस ज़रूरत के साथ एक कार्यक्रम के लिए पुराने प्रतिक्रियाशील-केला का उपयोग किया है (दुर्भाग्यवश, मेरे पास इस समय कोड नहीं है)।

मुझे लगता है कि कि स्पष्ट देरी सुपर स्वाभाविक रूप से भीतर प्रतिक्रियाशील-केला ढांचे फिट नहीं है क्योंकि आप हमेशा परोक्ष सार समय किसी प्रकार के साथ काम कर रहे हैं। विशेष अंतराल से विलंब करने के लिए समय की असली दुनिया की धारणा से निपटने की आवश्यकता होती है। मैं देख सकता हूं कि union event (delay 1.0 event) की तरह कुछ कहना चाहिए कि type Event a = [Maybe a]: [a, b, a, b] या [a, a, b, b] होना चाहिए? जैसा कि मैं इसके बारे में सोच रहा हूं, समस्या यह है कि परिचालन रनटाइम विवरणों पर विचार किए बिना उन दोनों में से कौन सा परिणाम अनिर्दिष्ट होना चाहिए।

लेकिन आप इसे एक आईओ एक्शन को वायरस करके प्रतिक्रियाशील-केला ढांचे को "आस-पास" कर सकते हैं, जिसमें आप देर से सोना चाहते हैं (मुख्य धागे में नहीं, जाहिर है) और फिर एक अलग घटना को आग लगती है । मेरा मानना ​​है कि मैं उस नए फ़ंक्शन में उस तर्क को लपेटने में सक्षम था जिसे मैं NetworkDescription मोनैड से कॉल कर सकता था (यह Moment मोनैड अस्तित्व से पहले था) मेरी नई देरी की घटना प्राप्त करने के लिए।

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