मैं एक ट्रैवर्सल फ़िल्टर करना चाहता हूं, फिर over
के साथ उपयोग करने के लिए अंतिम तत्व का चयन करें।'फ़िल्टर किए गए' के अंतिम तत्व पर ट्रैवर्सल
उदा। इस तरह कुछ (लेकिन जो वास्तव में संकलित होगा):
[1,2,3,4] & traverse . filtered even . _last +~ 10
> [1,2,3,14]
कोई विचार?
पीएस मुझे पता है कि filtered
केवल तभी वैध है जब ट्रैवर्सल में तत्वों की संख्या को प्रभावित नहीं किया जाता है।
वास्तविक उपयोग केस जो मैं कर रहा हूं वह केवल रिकर्सिव uniplate
ट्रैवर्सल का निम्नतम स्तर चुनना है जो कुछ पूर्वानुमान से मेल खाता है; अगर आपके पास ऐसा करने के बारे में अन्य विचार हैं तो मुझे उन्हें सुनना अच्छा लगेगा!
मुझे रिवर्स स्टेट मोनैड ट्रांसफार्मर में ट्रैवर्स करके ऐसा करने में एक दरार थी, लेकिन यह आपको 'मोनाडफिक्स एम => का हस्ताक्षर देता है। ट्रैवर्सल 'एस -> लेंसलाइक' एमएसए 'जो बहुत उपयोगी नहीं है - आप केवल इसमें मूल्य डाल सकते हैं, उन्हें बाहर नहीं निकाल सकते, क्योंकि' कॉन्स्ट एस 'एक' मोनाड 'नहीं है। एक वैकल्पिक दृष्टिकोण संग्रह की लंबाई को फोल्ड करके प्राप्त करना होगा और फिर अंतिम सूचकांक तक राज्य की गणना करना होगा - जो आपको कुछ दक्षता के खर्च पर 'मोनाडफ़िक्स' के बजाय 'मोनाड' बाधा प्रदान करेगा। कंक्रीट सूची के माध्यम से जाना, जैसा कि @ गुर्केंग्लास के उत्तर में है, शायद आपकी सबसे अच्छी शर्त है –