macros مشكلة ما هي مزايا وحدات الماكرو المخطط؟




ما هي وحدات الماكرو (3)

لماذا يفضل أي شخص وحدات الماكرو على وحدات الماكرو ليسب المشتركة (وأنا حقا تريد أن تعرف أيضا، وأنا لا تحاول أن تكون القزم)؟

تجربتي كما ليسب الجديد هو أن وحدات الماكرو نمط ليسب المشتركة هي أسهل بكثير للتعلم من وحدات الماكرو المخطط. لم أرى حتى الآن أية مزايا لوحدات الماكرو في المخطط، ولكن بالطبع لا يعني ذلك أنها غير موجودة.

وأنا أعلم أن وحدات الماكرو هي "هجنيك"، ولكن ما زلت غير مقتنع أن هذا يستحق التعقيد إضافية. من ناحية أخرى على الرغم من ذلك، هناك من الواضح أن الناس الذين هم على اقتناع بأن هذا أمر ضروري، وإلا لن يكون هناك تنفيذ وحدات الماكرو خطة في ليسب المشتركة.

لجعل قصة قصيرة قصيرة، يمكن للشخص الدفاع عن وحدات الماكرو مخطط لي؟


لأنهم يستخدمون لغة مختلفة غير مخطط، وحدات الماكرو مخطط أقل قوة من وحدات الماكرو المشتركة ليسب بالمعنى شبه الرسمي: يمكنك أن تفعل التعسفي تجميع الوقت حساب معهم، لكنها مشعر وملتوية. انها الكثير مثل حجة لعدم استخدام set! : set! أقل قوة set! لغات حرة تنتج أقل رمز عربات التي تجرها الدواب في مقابل التعامل مع حرج للدولة. في أي وقت تتداول فيه السلطة للانضباط، فإنك تراهن على أنك ستتمكن من بناء أنظمة أكثر تعقيدا على المدى الطويل.

هذا هو أفضل حجة رأيت لوحدات الماكرو مخطط على تلك ليسب المشتركة: إذا كنت بناء لغة معقدة على رأس المخطط، وكنت أقل عرضة لإدخال الخلل الكلي الخفية إذا كنت التمسك مع نظام الماكرو القياسية.

شخصيا، أنا لا بناء لغات كبيرة باستخدام وحدات الماكرو، لذلك أنا أفضل وحدات الماكرو ليسب المشتركة. أجد لهم أسهل بكثير للوظائف الصغيرة وتجنب التقاط متغير الخ ليست صفقة كبيرة على نطاق صغير.


وحدات الماكرو مخطط الحفاظ على الشفافية المرجعية .

نقلا عن "دليل مرجعي غيل" 6.10.2.2 النظافة:

قواعد الماكرو قواعد قواعد (..) الحفاظ على الشفافية المرجعية. عند قراءة تعريف ماكرو، يتم حل أية ارتباطات مجانية في هذا الماكرو نسبة إلى تعريف الماكرو؛ وعند قراءة إنكالياتيون الماكرو، يتم حل كافة الارتباطات الحرة في هذا التعبير نسبة إلى التعبير.

وتعرف هذه الخاصية في بعض الأحيان بالنظافة، كما أنها تساعد في نظافة الشفرات. في تعريفات الماكرو الخاص بك، يمكنك أن تتردد في إدخال متغيرات مؤقتة، دون الحاجة إلى القلق بشأن إدخال ارتباطات عن غير قصد في توسيع الماكرو.

يوفر مخطط قياسي syntax-rules syntax-case وبناء syntax-case .


وحدات الماكرو خطة إدخال اثنين، متعامدة أساسا، المفاهيم: النظافة ونمط مطابقة. النظافة هي أقل أهمية في lisp2 مثل ليسب المشتركة. نمط مطابقة اللغة يلتقط العديد من التعابير الكلية المشتركة، ولكن لديه مشكلة أنه هو في الأساس لغة مختلفة من المخطط. ربما أفضل مقدمة لوحدات الماكرو في المخطط، جنبا إلى جنب مع بعض المبررات وراءها هو شريرام كريشنامورثي في ​​الفصلين 36 و 37.

وأظن أن السبب الناس يكتبون نمط نظم الماكرو نمط في ليسب المشترك هو أكثر لمطابقة نمط من للنظافة.