سؤال

في Lambda Calculus (x. λ. λ s. λ z. λ z. يستخدم xs (ysz). مساعدتكم هو محل تقدير كبير

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

المحلول

في الواقع λ F1. λ F2. λ s. λ z. (F1 S (F2 SZ)) يحسب الجمع لأنه يتم استبداله في الواقع (F2 SZ)، الرقم الذي يمثله F2، إلى "الصفر" داخل (F1 SZ).

مثال: دعونا نأخذ اثنين ل F2، s s z في شكل موسع. F1 هو واحد: s z. وبعد استبدال هذا الأخير z بواسطة F2 وتحصل s s s z, ، النموذج الموسع لمدة ثلاثة.

سيكون هذا أسهل مع السبورة والتلويح باليد، آسف.

نصائح أخرى

في حساب التفاضل والتكامل Lambda، يمكنك رمز Datatype من حيث العمليات التي تحفزها. على سبيل المثال، يكون منطقي وظيفة اختيار فقط تأخذ في إدخال قيمين A و B وإرجاء إرجاع A أو B:

                      true = \a,b.a   false = \a,b.b

ما هو استخدام رقم طبيعي؟ الغرض المركزي الرئيسي له هو توفير التكرار ملزم. لذلك، نحن نرقى الرقم الطبيعي كمشغل يأخذ في إدخال وظيفة F، قيمة X، وتكرر تطبيق F Over X for N مرات:

                        n = \f,x.f(f(....(f x)...))

مع حوادث ن من و.

الآن، إذا كنت ترغب في تكرار N + M Times وظيفة F بدءا من x، يجب أن تبدأ تكرار N مرات، أي (NFX)، ثم تكرار أوقات إضافية، بدءا من النتيجة السابقة، وهذا هو

                                m f (n f x)

وبالمثل، إذا كنت ترغب في التكرار N * M Times، فأنت بحاجة إلى تكرار الأوقات M في تشغيل تكرار N مرات F (مثل في حلقتين متداخيتين)، وهذا هو

                                 m (n f) x  

يتم توضيح الترميز السابق لبيانات البيانات بشكل أكثر رسمية من حيث الصانعين والمزيلين المقابلين (ما يسمى بتشويف Bohm-Berarducci).

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