سؤال

أحتاج إلى بعض المساعدة في فهم المواد في قسم SICP 4.1.6 بشأن التعريفات الداخلية.

أفهم المشكلة التي أثيرت عند تعريف الوظائف المتداولة المتبادلة. لكنني لا أفهم كيف يتم حلها عن طريق تحويل تعبير Lambda التالي

(lambda <vars >
  (define u <e1 >)
  (define v <e2 >)
  <e3 >)

إلى:

(lambda <vars >
  (let ((u ’*unassigned*)
        (v ’*unassigned*))
    (set! u <e1 >)
    (set! v <e2 >)
    <e3 >))

هل يمكن لشخص مساعدتي هنا؟ شكرا.

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

المحلول

إذا <e1> يحاول في اشارة الى v في النموذج الأول، فشل - v غير محدد (لا بعد, ، لكن ال ليس الجزء هو مهم واحد). ولكن في النموذج الثاني، v يكون معرف بحلول الوقت الذي تحصل عليه <e1> (وإن لم يكن بعد تعيين -- ولكن هذا على ما يرام!-).

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