ما نوع حساب التفاضل والتكامل Lambda الذي سيكون مثالًا على ذلك؟
-
02-10-2019 - |
سؤال
أحاول الحصول على قبضة أفضل حول كيفية بدء تشغيل الأنواع في حساب Lambda. من المسلم به أن الكثير من الأشياء النظرية قد تجاوزت رأسي. Lisp هي لغة مكتوبة ديناميكيًا ، هل تتوافق ذلك تقريبًا مع حساب Lambda Untyped؟ أم أن هناك نوعًا من "حساب حساب Lambda المكتوب ديناميكيًا" الذي لا أدركه؟
المحلول
Lisp هي لغة مكتوبة ديناميكيًا ، هل تتوافق ذلك تقريبًا مع حساب Lambda Untyped؟
نعم ، ولكن فقط تقريبا. في حساب Lambda "النقي" ، يتم ترميز كل شيء كوظائف. (يمكنك Google من أجل "ترميز الكنيسة" الشهير و "Scott Chigoding" الأقل شعبية.) Lisp لديه بيانات غير وظيفية ، مثل الذرات والأرقام ، وبالتالي فإن هذا سيعتبر "حساب Lambda غيره الممتد مع الثوابت".
فرق مهم آخر هو في ترتيب التقييم. قواعد الحد من مصطلحات Lambda-Calculus غير محددة للغاية. (هناك نظرية ، نظرية الكنيسة ، التي تقول بشكل فضفاض أنه طالما أنهت الأمور ، فإن ترتيب التقييم لا يهم.) في الممارسة العملية ، يتم تقليل مصطلحات Lambda عادةً باستخدام الحد الأقصى المعروف باسم "الترتيب الطبيعي" لأنه لو أي استراتيجية التخفيض تنتهي ، هذا واحد يفعل. هذا يختلف تمامًا عن LISP الذي يقوم دائمًا بتقييم الحجج على النموذج الطبيعي قبل إجراء خفض بيتا. يسمى أمر التقييم هذا "استدعاء القيمة".
باختصار ، يتوافق LISP مع تم تمديد حساب التفاضل والتكامل غير المعقول ،.
نصائح أخرى
قدم جون مكارثي لايس في أوراقه في أبريل عام 1960 "وظائف العودية للتعبيرات الرمزية وحسابها حسب الآلة ، الجزء الأول". الفقرة التالية من الصفحة 6:
ه. وظائف وأشكال. من المعتاد في الرياضيات - خارج المنطق الرياضي - استخدام كلمة "وظيفة" بشكل غير دقيق وتطبيقها على نماذج مثل y2 + x. نظرًا لأننا سنحسب لاحقًا مع تعبيرات الوظائف ، نحتاج إلى تمييز بين الوظائف والأشكال وتدوين للتعبير عن هذا التمييز. هذا التمييز والتدوين لوصفه ، الذي ننحرف منه بشكل تافهة ، يتم تقديمه من قبل الكنيسة [3].
...
3. A. الكنيسة ، حساب Calculi of Lambda-Conversion (Princeton University Press ، Princeton ، NJ ، 1941).
ال مقال ويكيبيديا عن Lambda-Calculus لديه تاريخ من منشورات الكنيسة. يبدو أن ورقة عام 1941 التي أشار إليها مكارثي تدور حول مطبوع Lambda-Calculus ، في تناقض مع مقالة ويكيبيديا.
ال lambda
يمكن فهم الكلمة الرئيسية في LISP للإشارة إلى Lambda-Calculus فقط من خلال القياس. تعبير Lisp Lambda هو نوع من وظيفة مجهولة.
Lisp ليس "حساب Lambda" ، لا أعرف ما هو "حساب حساب Lambda".
إذا كنت ترغب في تحديد نظام Lambda Calculi من خلال نظام type ، فإن LISP هو بطبيعة الحال. من المؤكد أن الكلمة الرئيسية "lambda" في أي مخطط قبل المخطط هي بالتأكيد ، وبعد المخطط ، هناك مجال أيضًا ليقول إنه كذلك. مجرد استخدام "func" كان أكثر تواضعا. Lisp هو معالج قائمة بشكل أساسي ، وليس "حساب Lambda"
لقد كتبت أيضًا مقالة واسعة إلى حد ما حول هذا مرة واحدة والتي تحاول إظهار سبب: مصطلح "البرمجة الوظيفية" لا معنى له و B: لماذا الحديث عن "حساب Lambda" بدلاً من "نظام النوع" هو كذلك:
http://blog.nihilarchitect.net/archives/289/on-functional-programming/
أيضًا ، ضع في اعتبارك أنه في LISP ، جميع الوظائف سارية حجة واحدة ويمكن أن يكون فقط قوائم كحججهم.