ما نوع حساب التفاضل والتكامل Lambda الذي سيكون مثالًا على ذلك؟

StackOverflow https://stackoverflow.com/questions/2750421

سؤال

أحاول الحصول على قبضة أفضل حول كيفية بدء تشغيل الأنواع في حساب 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 ، جميع الوظائف سارية حجة واحدة ويمكن أن يكون فقط قوائم كحججهم.

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