मैं फिक्स-पॉइंट डेटा प्रकारों और रिकर्सन स्कीम का उपयोग करके हिंडली-मिलनर प्रकार अनुमान एल्गोरिदम बनाने में सक्षम होना चाहता था। वास्तविक प्रत्यावर्तन भागों से अलग सभी विस्तार की अनदेखी:रिकर्सन योजनाओं का उपयोग कर एल्गोरिदम डब्ल्यू
w env term = case term of
Lam n e -> lam (w (modify1 env) e)
App a b -> app (w (modify2 env) a) (w (modify3 env) b)
...
एल्गोरिथ्म एक वातावरण डेटा संरचना बनाता env
के रूप में यह पुनरावर्ती पेड़ को पार करता है जब तक यह लीफ़्स तक पहुँचता है। फिर यह इस जानकारी का उपयोग करता है क्योंकि यह परिणाम फिर से बनाता है।
env
भाग के बिना, इसे cata
के साथ आसानी से कार्यान्वित किया जा सकता है। क्या यह (env
के साथ) सामान्य रूप से रिकर्सन योजनाओं का उपयोग करके किया जा सकता है?
हाँ बस कैटा का लक्ष्य एक कार्य 'एनवी -> ए' – luqui
हां, लेकिन आपको शायद उच्च-आदेश वाहक प्रकार के साथ' कैटा 'का उपयोग करने की आवश्यकता होगी, जो एक क्रिया की गणना करेगा जो पर्यावरण को संशोधित कर सकती है और संभवतः असफल – pigworker
समझ गया। प्रतिभा। धन्यवाद – user47376