في Haskell ، ما الفرق بين "let x = 5" و "x = 5"؟


الاجابه 1:

س = 5 يمكن أن يكون

  • إعلان محلي من المستوى الأعلى ضمن تعبير let أو حيث كتلة
x = 5 - الإعلان عن المستوى الأعلى foo = - مثال سخيف لـ func ، يضيف 5 ثم divs ب 2 واسمحوا y = 2 x = 5 في (/ y). (+ x) foo = (/ y). (+ x) حيث y = 2 x = 5

اسمحوا س = 5 يمكن أن يكون

  • بداية تعبير let (انظر أعلاه) ، إعلان محلي في قائمة محلية لفهم إعلان في كتلة تدوين.

ما لا يمكن أن يكون هو إعلان رفيع المستوى.

غالبًا ما يتم الخلط بين القادمين الجدد إلى Haskell بسبب تلك النقطة الأخيرة ، لأن عليهم كتابة let x = 5 بدلاً من x = 5 فقط إذا كانوا يعملون في shell GHCi. ولكن هذا لأن GHCI يعمل عن طريق التفاف كل سطر مكتوب في السماح الضمني بحيث تصبح الشفرة التي تكتبها بشكل تفاعلي في GHCi تعبيرًا متداخلًا طويلًا. نتيجة لذلك ، لا يتبع الكود المكتوب في CHCi نفس التنسيق تمامًا مثل كود هاسكل العادي.