۲۶ - ۲نظریه‌ی تهیِ مشاهده‌ای

در صحبت‌هایی که در رابطه با نااکید بودنِ هسکل می‌کنیم، با تهی* زیاد سروکار داریم. یکی از دلایل‌ش اینه که نااکید بودن، با قابلیتِ محاسبه‌ی بیانیه‌هایی که داخل‌شون تهی وجود داره (که هیچ وقت اجبار نمیشن) تعریف میشه. با استفاده از تهی میشه محاسباتِ هسکل رو به راحتی مشاهده کرد. به دلیلِ قابلیتِ تهی که می‌تونه یه برنامه رو آناً متوقف کنه، یکی از اولین ابزاری‌ه که برای درکِ نااکید بودن کمک‌مون می‌کنه. شاید یادتون بیاد که قبلاً هم از این کلک استفاده کرده بودیم.

*

نظریه‌ی تهی مشاهده‌ای واقعی نیست، در این باره به ما ایمیل نزنین.

استانداردها و ملزومات

اصولاً هسکل فقط نااکید ِه، نه تنبل. یه زبانِ حقیقتاً تنبل، نتایجِ همه‌ی توابعی که محاسبه می‌کنه رو مِموآیز می‌کنه (م. در حافظه نگه میداره)، و چنین استراتژی‌ای، خارج از برنامه‌هایی که برای سرگرمی می‌نویسیم، به میزان غیرقابل قبولی حافظه مصرف می‌کنه. پیاده‌سازی‌های هسکل (مثلِ GHC Haskell) فقط ملزم به نااکید بودن هستن تا رفتارِ یکسانی نسبت به تهی داشته باشن؛ ازشون انتظار نمیره برای نحوه‌ی اجرای برنامه‌ها یا میزان بازدهی‌شون کارِ خاصی انجام بدن.

اساسِ نااکید بودن اینه که میشه بیانیه‌ای داشت، که حتی با وجودِ مقادیرِ تهی یا بینهایت، به یک مقدار ساده میشه. برای مثال، این فقط در یه زبانِ نااکید کار می‌کنه:

Prelude> fst (1, undefined)
1
Prelude> snd (undefined, 2)
2

یعنی یه پیاده‌سازی از نااکید بودن باید به درستی و در زمان مناسب، تهی یا مقدار برگردونه.