۲۵ - ۶تایپهایی که بهتره استفاده نکنین
همهی تایپها لزوماً کاربردی نیستن، یا اصلاً استفاده ازشون عقلایی نیست. ListT و Writer یا WriterT از نمونههاش هستن.
چرا از Writer یا WriterT استفاده نکنیم؟
خیلی راحت ممکنه شرایطی پیش بیاد که برای مسئلهتون، Writer یا زیادی تنبل باشه یا زیادی اکید، و بعد بیشتر از میزانِ قابل قبول حافظه مصرف کنه. Writer ممکنه ثانک*های محاسبهنشده رو تلنبار کنه و منجر به نَشتِ حافظه بشه. برای لاگکردن یا گزارشنویسی ِ برنامههایی که برای زمان زیادی اجرا میشن هم مناسب نیست، چون تا زمانی که محاسبات تکمیل نشن، هیچ کدوم از مقادیرِ لاگشده رو نمیشه بازیابی کرد.†
م. در هسکل به مقادیری که هنوز محاسبه نشدن ثانک گفته میشه. اینجا حرفِ ث بیشتر صدای ت میده تا ث.
اگه دوست دارین این رو بهتر یاد بگیرین، گابریل گونزالِس یه بلاگ پست خوب در این مورد داره.
معمولاً وقتی از Writer در یه برنامه استفاده میشه، اسمش Writer نیست. بجاش برای یه تایپِ w، یه رایتر ِ یکبار مصرف درست میشه. با توجه به اینها، خوبه که بدونین Reader، Writer، یا State چطوری نوشته میشن، چون کسی که برنامه رو نوشته، ممکنه از تایپها و اسمهایی که در کتابخونه ِ transformers موجود هستن استفاده نکرده باشه. گاهی اوقات دلیل این کار اینه که یه Writer ِ اکیدتَر از اونی که در کتابخونه هست میخواستن.
موضوعِ فصلِ بعدی، تشخیص و اندازهگیری نیاز به اکیدبودن (محاسبهی مصرانهترِ ثانکها) در برنامههاست.
ListT ای که میخواین از تایپِ لیست درست نشده
بدیهیترین تعریف برای ListT عموماً به چند دلیل توصیه نمیشه:
۱.
اولین تلاشِ اکثرِ آدمها قانون شرکتپذیری رو پاس نمیکنه. اونطوری نوشتن رو نشون نمیدیم چون به خاطرِ دلایلی که در زیر لیست کردیم، ارزشش رو نداره.
۲.
خیلی سریع نیست.
۳.
کتابخونههایی که با جریان سروکار دارن مثلِ pipes و conduit در اکثرِ موارد بهتر عمل میکنن.
AmbT توسط کونال الیوت هم از کتابخونههای قدیمیتره که ListT رو به درستی پیادهسازی کرده،* اما اگه با ContT و انگیزهی پشتِ Amb آشنا نیستین، ممکنه درکش سخت باشه.