से अद्यतित मूल्य मैं प्रतिक्रियाशील केले के साथ हास्केल में एक संगीत खिलाड़ी लिख रहा हूं। मेरे पास एक समस्या है जो पॉल के साथ अद्यतित मूल्य ला रही है। मैं खेलते समय उपयोगकर्ता को वैकल्पिक रूप से ट्रैक का एक हिस्सा चुनने में सक्षम करना चाहता हूं।प्रतिक्रियाशील-केले: पॉल
makePlayNetworkDescr :: Player a => AddHandler Command -> a -> NetworkDescription t()
makePlayNetworkDescr addCmdEvent player = do
bPosition <- fromPoll (getPosition player)
eCmds <- fromAddHandler addCmdEvent
let eSetStart = filterE (isJust) $ bPosition <@ filterE (==SetStart) eCmds
eSetEnd = filterE (isJust) $ bPosition <@ filterE (==SetEnd) eCmds
eClearRange = filterE (==ClearRange) eCmds
bStart = accumB Nothing ((const <$> eSetStart) `union` (const Nothing <$ eClearRange))
bEnd = accumB Nothing ((const <$> eSetEnd) `union` (const Nothing <$ eClearRange))
ऊपर, getPositionकुछ भी नहीं लौटने से पहले प्लेबैक वास्तव में शुरू होता है, एक आंशिक समारोह है: मेरे कोड कुछ इस तरह लग रहा है। समस्या यह है कि एक बार addCmdEvent पहली बार आग लगती है, bPosition अभी भी कुछ भी मान रखेगी। eSetStart/End इस पर आधारित उनके मूल्यों की गणना करें। केवल तभी bPosition अपडेट हो जाता है, और यह वह मान है जिसका उपयोग अगली बार addCmdEvent आग से किया जाएगा। और इसी तरह, मूल्य हमेशा "एक से बंद" होगा, इसलिए बोलने के लिए।
संबंधित SO question संबंधित है, लेकिन उस स्थिति में एक "ट्रिगर" ईवेंट मौजूद है जिसका उपयोग व्यवहार के नए मूल्य की गणना के लिए किया जा सकता है। क्या पॉली से ऐसा कुछ भी संभव है?
जब आप समाप्त कर लेंगे, तो आपको परिणाम हैकेज पर रखना चाहिए। हास्केल से अपना संगीत बजाने के लिए तत्पर हैं! – amindfv
मैं इसे एक बार हैक पर रखने की योजना बना रहा हूं (हां) मैं समाप्त हो गया हूं। हालांकि यह संगीत को ट्रांसक्रिप्शन करने में सहायता करने के लिए "संगीत का अपना खुजली" प्रकार का संगीत खिलाड़ी है, इसलिए मुझे यकीन नहीं है कि यह अन्य लोगों के लिए कितना दिलचस्प होगा। – oggy