سؤال

رئيسي

أنا في حيرة من أمري بشأن الدافع وراء الحاجة إلى تدوين منفصل للأنواع П، والذي يمكنك العثور عليه في أنظمة الكتابة بدءًا من α2 فصاعدًا.عادةً ما تكون الإجابة على هذا النحو - فكر في كيفية تمثيل وظيفة التوقيع على الهوية - يمكن أن تكون كذلك λa:type.λx:a.x أو λb:type.λx:b.x.ويقولون إن الجزء الدقيق هو أن هذين التوقيعين ليسا فقط not equal, فهي ليست مكافئة ألفا كمتغيرات النوع a و b هي متغيرات حرة داخل التجريدات المقابلة لها.لذا للتغلب على هذه المشكلة النحوية المزعجة، نقدم ملف П الذي يعمل بشكل جيد مع تحويل ألفا.

إذن السؤال:لماذا هذا؟لماذا لا نصلح فقط فكرة تكافؤ ألفا؟

تحديث ض:

يا سخيفة مني λa:type.λx:a.x و λb:type.λx:b.x مكافئة ألفا.لكن لماذا a:type -> a -> a و b:type -> b -> b ليس بعد ذلك.

تحديث سوك ض:

آها، مثير للاهتمام، أعتقد أن هذا مثال مثالي للعمى الانتقائي =D

وأنا أقرأ في كتاب نظرية النوع والدليل الرسمي, ، وفي الفصل الخاص بـ lambda2، يحفز المؤلف وجود П باستخدام هذا النوع من الحجج بالضبط - لا يمكن للمرء أن يقول ذلك \t:*.\v:t.v : * -> t -> t لأن هذا يجعل حدين مكافئين ألفا\t:*.\v:t.v و \g:*.\v:g.v لها أنواع مختلفة، لأن الأنواع المقابلة ليست مكافئة ألفا، حيث تشبه الأنواع t:* -> t -> t هي في الواقع ألفا ثابتة. اهتم بالفرق بين t:* -> t -> t و * -> t -> t.لكن، ألا يجعل هذا من هذه الحجة تافهة بعض الشيء، وهل الحديث عن النوع له معنى؟ a -> b أين a و b غير ملزمة بأي متغيرات الكميات.Andrej Bauer وأشار في التعليقات إلى أن П يشبه بالفعل فكرة لامدا مع عدد قليل من الأجراس والصفارات الإضافية.

على العموم، لقد انتهيت من هذا، شكرًا لكم يا رفاق.

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

المحلول

أعتقد أننا بحاجة فقط إلى توضيح بعض الأمور هنا:

  1. في التعبير $\لامدا أ :\mathsf{نوع} .\لامدا س :أ .س$ المتغير $أ$ غير ملزمة (من الخارج $\لامدا$).التعبيرات $\لامدا أ :\mathsf{نوع} .\لامدا س :أ .س$ و $\لامدا ب :\mathsf{نوع} .\لامدا س :ب .س$ نكون $\ألفا$-متساوي.
  2. التعبير $\لامدا أ :\mathsf{نوع} .\لامدا س :أ .س$ يكون وظيفة الهوية، هو لا "توقيع وظيفة الهوية".
  3. إذا كنت تقصد بـ "توقيع وظيفة الهوية" أن تقول "نوع وظيفة الهوية"، فسيكون الأمر مثل $\بي_{أ :\mathsf{type}} .(أ إلى أ)$, ، أو إذا كنت تريد أنواع المنتجات فقط، فهو كذلك $\بي_{أ :\mathsf{type}} \Pi_{x :أ} $.

هل مازال هناك سؤال؟

ربما هذا سوف يساعد:

  • نوع وظيفة الهوية $\لامدا س :أ .س$ يكون $a \إلى $
  • نوع وظيفة الهوية $\لامدا و :ب .ص$ يكون $ب \إلى ب$
  • وظائف $\لامدا س :أ .س$ و $\لامدا و :ب .ص$ مختلفة
  • الأنواع $a \إلى $ و $ب \إلى ب$ مختلفة
  • نوع متعدد الأشكال تطابق وظيفي $\لامدا ج :\mathsf{نوع} .\لامدا ض :ج.ض$ يكون $\بي_{ج :\mathsf{type}} .ج \ إلى ج $.
  • وظائف $\لامدا أ :\mathsf{نوع} .\لامدا س :أ .س$ و $\لامدا ج :\mathsf{نوع} .\لامدا ض :ج.ض$ نكون $\ألفا$-متساوي
  • الأنواع $\بي_{أ :\mathsf{type}} .\ إلى $ و $\بي_{ج :\mathsf{type}} .ج \ إلى ج $ نكون $\ألفا$-متساوي.

تكميلية: بعد التحدث مع أليكس سيمبسون أثناء تناول كوب من الشاي، هناك شيء آخر يمكنني قوله.نحن لا نفعل ذلك يحتاج متفرق $\لامدا$ و $\بي$ المنشئات، حيث أن كلاهما لهما نفس الشكل النحوي تمامًا (خذ وسيطتين، واربط متغيرًا واحدًا).في الواقع، إذا خدمتني ذاكرتي بشكل صحيح، آلي تستخدم نفس التدوين ل $\لامدا$-الملخصات و $\بي$-أنواع.ولكن النقطة المهمة هي أننا يريد لاستخدام اثنين من المنشئات المختلفة لأنها تشير مفاهيم مختلفة.

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