كيفية كتابة قائمة فارغة باستخدام S، K وأنا منفذي؟
-
16-09-2019 - |
سؤال
وأنا أعلم ذلك:
(cons [p] [q]) is ((s ((s i) (k [p]))) (k [q]))
(car [lst]) is ([lst] k)
(cdr [lst]) is ([lst] (k i))
أريد أن أكتب قائمة مثل هذا
(cons [a] (cons [b] (cons [c] [nil])))
, ، والتي ستكون شيء مثل هذا:
((s ((s i) (k [a]))) (k ((s ((s i) (k [b]))) (k ((s ((s i) (k [c]))) (k [nil]))))))
لكنني لا أعرف كيفية ترجمة "NIL" في S، K وأنا منفذي. هل يعلم أحد؟
شكرا مقدما، إدوين خوسيه Palathinkal
المحلول
الشيء الوحيد الذي تحتاجه من nil
التمثيل هو أن تكون قادرا على تحديد ذلك - اكتب بعض null?
المسند الذي يعود "صحيح" ل nil
و "خطأ" لجميع أزواج أخرى. هذا يعني أن الإجابة تعتمد على تمثيلك الصحيح / الخاطئ. مع الاختيار المشترك λxy.x
و λxy.y
, ، ترميز مريحة ل nil
هو λf.[true]
. وبعد ترجمة هذا إلى التزلج سهل للغاية الآن (ولن أقوم بذلك هنا، لأنه يبدو وكأنه الواجبات المنزلية ...).
(أيضا، تنفيذ null?
المسند بالنظر إلى هذا التمثيل ل nil
هو ممارسة جيدة.)
لا تنتمي إلى StackOverflow