۲۵ - ۶تایپ‌هایی که بهتره استفاده نکنین

همه‌ی تایپ‌ها لزوماً کاربردی نیستن، یا اصلاً استفاده ازشون عقلایی نیست. ‏‎ListT‎‏ و ‏‎Writer‎‏ یا ‏‎WriterT‎‏ از نمونه‌هاش هستن.

چرا از ‏‎Writer‎‏ یا ‏‎WriterT‎‏ استفاده نکنیم؟

خیلی راحت ممکنه شرایطی پیش بیاد که برای مسئله‌تون، ‏‎Writer‎‏ یا زیادی تنبل باشه یا زیادی اکید، و بعد بیشتر از میزانِ قابل قبول حافظه مصرف کنه. ‏‎Writer‎‏ ممکنه ثانک*‌های محاسبه‌نشده رو تلنبار کنه و منجر به نَشتِ حافظه بشه. برای لاگ‌کردن یا گزارش‌نویسی ِ برنامه‌هایی که برای زمان زیادی اجرا میشن هم مناسب نیست، چون تا زمانی که محاسبات تکمیل نشن، هیچ کدوم از مقادیرِ لاگ‌شده رو نمیشه بازیابی کرد.

*

م. در هسکل به مقادیری که هنوز محاسبه نشدن ثانک گفته میشه. اینجا حرفِ ث بیشتر صدای ت میده تا ث.

اگه دوست دارین این رو بهتر یاد بگیرین، گابریل گونزالِس یه بلاگ پست خوب در این مورد داره.

معمولاً وقتی از ‏‎Writer‎‏ در یه برنامه استفاده میشه، اسم‌ش ‏‎Writer‎‏ نیست. بجاش برای یه تایپِ ‏‎w‎‏، یه رایتر ِ یکبار مصرف درست میشه. با توجه به اینها، خوبه که بدونین ‏‎Reader‎‏، ‏‎Writer‎‏، یا ‏‎State‎‏ چطوری نوشته میشن، چون کسی که برنامه رو نوشته، ممکنه از تایپ‌ها و اسم‌هایی که در کتابخونه ِ ‏‎transformers‎‏ موجود هستن استفاده نکرده باشه. گاهی اوقات دلیل این کار اینه که یه ‏‎Writer‎‏ ِ اکیدتَر از اونی که در کتابخونه هست می‌خواستن.

موضوعِ فصلِ بعدی، تشخیص و اندازه‌گیری نیاز به اکید‌بودن (محاسبه‌ی مصرانه‌ترِ ثانک‌ها) در برنامه‌هاست.

‏‎ListT‎‏ ای که می‌خواین از تایپِ لیست درست نشده

بدیهی‌ترین تعریف برای ‏‎ListT‎‏ عموماً به چند دلیل توصیه نمیشه:

۱.

اولین تلاشِ اکثرِ آدم‌ها قانون شرکت‌پذیری رو پاس نمی‌کنه. اونطوری نوشتن رو نشون نمیدیم چون به خاطرِ دلایلی که در زیر لیست کردیم، ارزش‌ش رو نداره.

۲.

خیلی سریع نیست.

۳.

کتابخونه‌هایی که با جریان سروکار دارن مثلِ ‏‎pipes‎‏ و ‏‎conduit‎‏ در اکثرِ موارد بهتر عمل می‌کنن.

‏‎AmbT‎‏ توسط کونال الیوت هم از کتابخونه‌های قدیمی‌تره که ‏‎ListT‎‏ رو به درستی پیاده‌سازی کرده،* اما اگه با ‏‎ContT‎‏ و انگیزه‌ی پشتِ ‏‎Amb‎‏ آشنا نیستین، ممکنه درک‌ش سخت باشه.