एक recent question मुझे कैसे एकमैं पॉलीमोर्फिज्म को डेटा संरचना में कैसे दबा सकता हूं?
[ReifiedLens s t a b]
में एक
forall f . Functor f => [LensLike f s t a b]
कन्वर्ट करने के लिए एक आसान तरीका यह वास्तव में धीरे-धीरे ऐसा करने के लिए, !!
के साथ इस सूची में अनुक्रमण द्वारा नहीं है आश्चर्य करने के लिए नेतृत्व, लेकिन यह काफी अविश्वसनीय है अक्षम। ऐसा लगता है कि reflection
में उपयोग किए गए एक की तरह एक चाल खींचने के लिए पर्याप्त पैरामीट्रिकिटी होनी चाहिए, लेकिन मुझे कुछ भी पता नहीं लग रहा है। क्या यह कुशलतापूर्वक ऐसा करना संभव है?
मुझे नहीं लगता कि यह भी संभव है। हमें 'फंक्टर एफ -> [लेंसलाइक एफ एस टी ए बी]' से '(फंक्चरर एफ -> लेंसलाइक एफ एस टी ए बी]' (परिचालन रूप से) जाना होगा। शुरू करने के लिए सूची खींचने के लिए हमें 'फेंक्टर एफ' में पास करने की आवश्यकता है, और वहां कोई भी नहीं है। –
@ AndrásKovács शायद हम खुद को यह समझाने के लिए एक पैरामीट्रिटी तर्क का उपयोग कर सकते हैं कि 'फेंक्टर एफ -> [लेंसलाइक एफ एस टी ए बी] प्रकार के कार्यों को' फ़ैक्टर एफ 'तर्क को सार्थक तरीके से निरीक्षण किए बिना उनकी परिणाम सूची की लंबाई चुननी चाहिए। फिर वहां से बाकी रास्ता प्राप्त करना आसान है। (बेशक यह दावा कुछ विशेष 'एफ'' के लिए 'फेंक्टर एफ -> [लेंसलाइक एफ एस टी ए बी]' के कार्यों के बारे में स्पष्ट रूप से सच नहीं है। –
@ एंड्रसकोवाक्स, जो मेरा डर था। हमें किसी प्रकार का "सुपरफंक्टर" शब्दकोश चाहिए जो हम पास कर सकते हैं जो जादुई रूप से किसी भी अन्य 'फंक्टर' शब्दकोश की पहचान लेने में सक्षम होगा। – dfeuer