تفاوت بین "let x = 5" و "x = 5" در هاکل چیست؟


پاسخ 1:

x = 5 می تواند باشد

  • یک اعلامیه سطح بالا یک بیانیه محلی در یک عبارت بیانیه یا در کجای بلوک
x = 5 - اعلامیه سطح بالا foo = - نمونه احمق تابع ، اضافه کردن 5 و تقسیم بر 2 ، اجازه دهید y = 2 x = 5 در (/ y). (+ x) foo = (/ y). (+ x) که در آن y = 2 x = 5

بگذارید x = 5 باشد

  • شروع یک بیان اجازه (به بالا مراجعه کنید) یک بیانیه محلی در یک لیست که می تواند یک اعلامیه محلی را در یک بلوک نشانه درک کند.

آنچه نمی تواند باشد توضیحی در سطح بالا است.

افراد تازه وارد هاسکل اغلب با این نکته آخر اشتباه گرفته می شوند زیرا مجبورند هنگام کار در پوسته GHCi اجازه دهید x = 5 و نه فقط x = 5 را وارد کنید. با این حال ، به این دلیل است که GHCI هر سطحی را که تایپ می کنید به صورت ضمنی اجازه می دهد بسته شود ، بنابراین کدی که در GHC تعاملی وارد می کنید ، به یک عبارت طولانی و لانه دار تبدیل می شود. در نتیجه ، کد وارد شده در CHCi دقیقاً با فرمت کد معمولی هاسکل ندارد.