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