2008-10-15 12 views
6

आरईबीओएल में सूची समझने के लिए कोई अंतर्निहित तरीका नहीं है। हालांकि, आरईबीओएल की एक शक्तिशाली सुविधा है (जिसे parse कहा जाता है) जिसका उपयोग डोमेन-विशिष्ट भाषाओं (डीएसएल) बनाने के लिए किया जा सकता है। मैंने सूची समझ के लिए ऐसे मिनी-डीएसएल बनाने के लिए parse का उपयोग किया है। अभिव्यक्ति की व्याख्या करने के लिए, समझ युक्त ब्लॉक को एक फ़ंक्शन में पास किया जाता है, जो एक बेहतर शब्द की कमी के लिए मैंने comprehend कहा है।मुझे आरईबीओएल फ़ंक्शन को क्या कॉल करना चाहिए जो सूची की समझ करता है?

उदाहरण:

comprehend [(a * b) for a in 1x100 for b in 4x10 where (all [odd? a odd? b])] 

किसी कारण से, comprehend मेरे लिए सही नहीं लग रहा है, लेकिन eval की तरह कुछ बहुत सामान्य है।

मुझे कोई अन्य भाषा नहीं मिली है जिसके लिए सूची समझ के लिए एक कीवर्ड या फ़ंक्शन की आवश्यकता है। वे जहां भी मौजूद हैं, वे शुद्ध वाक्य रचनात्मक चीनी हैं। दुर्भाग्य से मेरे पास वह विकल्प नहीं है। तो, यह देखते हुए कि मेरे पास एक कार्य होना चाहिए, इसके लिए एक अच्छा, संक्षिप्त, तार्किक नाम क्या है?

+1

यहाँ सूची समझ के लिए स्रोत कोड है: http://blog.revolucent.net/2009/04/dirt-simple-dsl-in-rebol.html –

उत्तर

4

के बारे में कैसे select?

select [(a * b) for a in 1x100 for b in 4x10 where (all [odd? a odd? b])]

+2

REBOL पहले से ही एक 'select' है समारोह, और यह महत्वपूर्ण है। यह नाम नहीं है। – BrianH

2

क्योंकि सूची की समझ को मानचित्र के समान समझा जा सकता है, तो आप इसे "listmap" जैसे कुछ कहने के बारे में सोच सकते हैं। वैकल्पिक रूप से, क्योंकि सूची की समझ सेट-बिल्डर नोटेशन पर आधारित होती है, इसलिए आप इसे "बिल्ड" या "बिल्डलिस्ट" के आधार पर कुछ कह सकते हैं।

(अस्वीकरण: मैं REBOL बारे में बहुत कम जानते हैं, इसलिए मुझे माफ कर दो, तो इन नामों को पहले से ही लिया जाता है)

1

do उचित हो सकता है, के रूप में सूची comprehensions इकाई comprehensions का सिर्फ एक उदाहरण हैं, और do कीवर्ड sugared Monadic संगणना के लिए हास्केल में प्रयोग किया जाता है, लेकिन मुझे लगता है कि यह एक उपयोगकर्ता पुस्तकालय के लिए बहुत अस्पष्ट है। मैंने अपनी सूची समझ कार्य comp कहा, लेकिन यह आपके पास पहले से मौजूद एक संक्षिप्त नाम है। शायद yielding? जैसे yielding [(a * b) for a in 1x100 for b in 4x10 where (all [odd? a odd? b])]। बस झुकाव की तरह और नाटक [] वहाँ नहीं हैं।

+0

दुर्भाग्यवश डीओ पहले से ही एक REBOL शब्द है। –

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

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