سؤال حول "تنفيذ البرنامج التعليمي لحساب لامدا المكتوب بشكل مستقل"
-
29-09-2020 - |
سؤال
لدي صراع تقني طفيف مع هذا تعليمي رائع.في الصفحة 5 يتحدث البرنامج التعليمي عن كتابة قواعد لامبداس المكتوبة ببساطة ويعرض الحكم التالي على أنه قابل للاشتقاق عبر القواعد على الشكل 3.
لم أتمكن من إثبات أي منهما id
ولا const
لنفس السبب.خذ على سبيل المثال id
مثال.
- لنفترض أنني أبحث عن قاعدة التحقق من النوع
CHK
.تقول أنه من أجلcheck types
يجب علي أولا إجراء الاستدلال ثم مقارنة النتيجة بما أتوقعه. - للقيام الاستدلال على التطبيق ، لا بد لي من استخدام
APP
القاعدة التي تجبرني على الفور على استنتاج نوع الجانب الأيسر من التطبيق ، وهي(id :: α -> α)
- للقيام بذلك أنا باستخدام
ANN
القاعدة التي تجبرني على التحقق من ذلكα -> α
هو نوع (وأستطيع أن أثبت أنه لا توجد مشكلة).ثم حصلت على هذا عاريةid
رمز ويجب أن تثبت انها نوع ليكونα -> α
. - أخيرا ، هنا مشكلة.من أجل القيام بذلك سوف تضطر إلى استخدام
var
القاعدة ، التي تتطلب نوعid
ليتم تعيينها في السياق جاما صراحة ، ولكن لم يتم ذلك ، وبالتالي فإن الدليل ينهار.
المحلول
math \ الرياضيات{معرف}$ و math \ ماثسف {كونست}} ليست متغيرات حساب التفاضل والتكامل ، ولكن السكر النحوي ل lamb \ لامدا س \ اليمينارو س x و lamb \ امدا س \ اليمينارو \ امدا ص \ اليمينارو س x على التوالي.جاء ذلك في نهاية 2.2 دولار ويتم نقله بمهارة عن طريق استخدام خط بلا رقيق بدلا من الخط المائل (هذه اتفاقية مطبعية لهذه الوثيقة بالذات ، وليست اتفاقية مشتركة).
لذلك على سبيل المثال نوع الحكم $$ \ ألفا ::\ أست ، ص ::\ ألفا \ فداش (\ماثسف{معرف} ::\ ألفا \ اليمينارو \ ألفا) \:y ::\ اليمينارو \ ألفا $$ هو أيضا نوع الحكم $$ \ ألفا ::\ أست ، ص ::ألفا فداش ::\ ألفا \ اليمينارو \ ألفا) \:y ::\ اليمينارو \ ألفا .$$ إنه تدوين مختلف لنفس الكائن الرياضي.