سؤال

REBOL لا يوجد لديه المدمج في الطريق لأداء قائمة comprehensions.ومع ذلك ، REBOL قوية مرفق (المعروفة باسم parse) التي يمكن استخدامها لخلق المجال-لغات معينة (DSLs).لقد استعملت parse لخلق مثل هذه مصغرة DSL عن قائمة comprehensions.من أجل تفسير التعبير كتلة تحتوي على الفهم يتم تمريرها إلى وظيفة لعدم وجود مصطلح أفضل اتصلت comprehend.

على سبيل المثال:

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

لسبب ما ، comprehend لا يبدو لي صحيحا, ولكن شيئا من هذا القبيل eval جدا العامة.

لم أجد أي لغة أخرى تتطلب الكلمة أو وظيفة قائمة comprehensions.فهي نقية النحوية السكر أينما كانت موجودة.للأسف أنا لا أملك هذا الخيار.لذا أرى أنه يجب أن يكون وظيفة ، ما هو جيد بليغة المنطقي الاسم ؟

هل كانت مفيدة؟

المحلول

ماذا عن select?

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

نصائح أخرى

لأن قائمة comprehensions يمكن اعتبار المماثلة إلى الخريطة ، قد تفكر في استدعاء شيئا مثل "listmap".بالتناوب, لأن قائمة comprehensions تستند إلى مجموعة باني التدوين ، هل يمكن أن نسميها شيئا على غرار "بناء" أو "buildlist".

(تنويه:أنا أعرف القليل جدا عن REBOL, لذا اغفر لي إن هذه الأسماء هي التي اتخذت بالفعل)

يؤدي الى حدوث تغير

do يمكن أن تكون مناسبة ، قائمة comprehensions فقط مثيل واحد من الكائن الدقيق الاحادي الخلية comprehensions ، do هي الكلمة المستخدمة في هاسكل على مسكر بعملية الحسابات ولكن أظن أنها غامضة جدا لمستخدم المكتبة.ودعا لي قائمة الفهم وظيفة comp, ولكن هذا مجرد اختصار ما لديك بالفعل.ربما yielding?E. g. yielding [(a * b) for a in 1x100 for b in 4x10 where (all [odd? a odd? b])].مجرد نوع من الحول و التظاهر [ ] أليس هناك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top