2013-08-30 6 views
5

नेटवायर को आजमाने के लिए, मैं लाइब्रेरी का उपयोग कर पोंग को कार्यान्वित कर रहा हूं। कोड में मेरे पास एक बॉल वायर और कंप्यूटर पैडल वायर है, और चूंकि वे कुछ मूल्यों के लिए एक दूसरे पर निर्भर करते हैं, मैं अनंत लूप के साथ मुद्दों में चल रहा हूं। कुछ छद्म कोड को समझाने के लिए:नेटवायर पारस्परिक रूप से निर्भर तार

ball :: Wire() IO GameInput Ball 
ball = (... define ball ...) . pcPaddle 

pcPaddle :: Wire() IO GameInput Paddle 
pcPaddle = (... define pcPaddle ...) . ball 

ध्यान देने योग्य बात यह है कि वे एक दूसरे को इनपुट के लिए लेते हैं। मैं निम्न तरीके से कम करने के लिए कोशिश की है:

ball :: Wire() IO GameInput Ball 
ball = (...) . delay (... base paddle init ...) . pcPaddle 

और इन दो तारों में delay समारोह का उपयोग कर के अन्य रूपों, लेकिन मैं <<loop>> रनटाइम त्रुटि परवाह किए बिना हो रही है।

मैं तारों में से एक कैसे शुरू करूं ताकि यह प्रणाली काम कर सके?

उत्तर

6

बेशक 5 मिनट बाद मुझे जादू संयोजन लगता है जो काम करता है। क्या मैंने किया था मैं आदानों तारों में ले लिया बदल

ball :: Wire() IO Paddle Ball 
ball = ... 

paddle :: Wire() IO Ball Paddle 
paddle = ... 

तो जब यह तारों मैं इस किया था की मेरी नेटवर्क बनाने के लिए आया था:

{-# LANGUAGE DoRec #-} 
{-# LANGUAGE Arrows #-} 
system = proc g -> do 
    rec b <- delay (... ball initial value ...) . ball -< p 
     p <- paddle -< b 

    returnA -< (b,p) 

यह उनकी निर्भरता acknowlegdes, और देता है गेंद के लिए अपने पहले पास पर डमी प्रारंभिक मूल्य पैडल करें।

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