سؤال

هل هو أي تشبيهات للمخطط define-syntax في إليسب?في define-syntax يمكنني تحديد بعض الكلمات الرئيسية وفي إليسب defmacro يبدو أنني غير قادر.تحرير:يبدو أنني إما لا أفهمك جيدا ، أو سؤالي غير واضح.في المخطط ، من الممكن تعريف الماكرو بكلمات محجوزة مثل

(حلقة for a in بعض-قائمة

(حلقة while

في إيماكس ليسب وجدت لا وسيلة لإدخال مثل هذا السكر.على الأكثر ، يمكنني إجراء ماكرو ، يجب أن يسمى مثل

(حلقة - للحصول على قائمة (افعل - الكثير من الأشياء...)

مسائل القراءة

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

المحلول

كل من مخطط و إليسب لديها أنظمة الماكرو."الكلمات الرئيسية" define-syntax و defmacro كلاهما يقدم اسما لماكرو معرف من قبل المستخدم.

في الوقت ماكرو ، فو ، ويستخدم في التعليمات البرمجية الفعلية ، ويقول (foo 1 bar) يجب أن يحدد موسع الماكرو كيفية إعادة كتابة النموذج المحدد, (foo 1 bar), ، في شكل أبسط لا يحتوي على وحدات ماكرو للمستخدم.يستدعي موسع الماكرو الوظيفة التي تم تعريفها في وقت الماكرو foo تم تعريفه.أي.فإنه يدعو الدالة التي حددتها مع define-syntax أو defmacro مع تمثيل النموذج, (foo 1 bar).يمكن أن يكون التمثيل "كائنات بناء الجملة" أو قوائم عادية (وهذا يختلف في أنظمة الماكرو المختلفة).

هذا هو رأيي في أوجه التشابه بين define-syntax و defmacro.

أنظمة الماكرو من مخطط ر5 و إليسب مختلفة على الرغم من.

الموسع الكلي المرتبط بـ foo يمكن في مخطط ر 5 يتم تحديدها بمساعدة syntax-rules.يتيح لك ذلك استخدام مطابقة النمط لتحديد قواعد إعادة الكتابة (داخليا ، سيتم تقييم نموذج قواعد بناء الجملة ليعمل).اختلافات أخرى:سوف خوارزمية التوسع الكلي في مخطط ر5 رس تساعدك مرة أخرى عن غير قصد إدخال أسماء تتعارض مع أسماء من أجزاء أخرى من البرنامج الخاص بك (ويقول من مكتبة ، لم تكتب نفسك).تاريخيا نظرا للطريقة التي تعمل بها مساحات الأسماء في ليسب ، فإن هذه المشكلة ليست كبيرة في ليسب ، ولكن من الممكن ارتكاب الأخطاء.

تاريخيا مخطط و إليسب كلاهما استخدم نفس خوارزمية التوسع الكلي ، ولكن بعد ذلك بدأ المخططون في تجربة خوارزميات أخرى.تم تقديم أنظمة "قواعد بناء الجملة" في آر 5 آر إس ، لكن التطور لم يتوقف عند هذا الحد.في هذه الأيام كل تنفيذ مخطط الحديثة لديها (المتغيرات من) نظام "بناء الجملة حالة".

وقد فعلت بعض التنفيذ العمل لجعل هذه الخوارزمية التوسع العمل مع وحدات (مضرب ، ر6-تطبيقات ، وغيرها).

باختصار عندما تقرأ عن أنظمة الماكرو المخطط ، احرص على فحص المتغير الذي تقرأ عنه بدقة.إذا كنت تقرأ عن القيود ، ثم على الأرجح كنت قد وجدت النص على (الآن قديمة نوعا ما) syntax-rules النظام.

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