تنظیمات کارخانهی ربات را مدیریت کنید.
وقتی ربات از خط تولید کارخانه بیرون میآید، هیچ اسمی ندارد.
اولین باری که رباتی را روشن میکنید، یک اسم تصادفی به این شکل تولید میشود: دو حرف بزرگ و بعد سه رقم، مثل RX837 یا BC811.
هر چند وقت یکبار لازم است رباتی را به تنظیمات کارخانهاش برگردانیم، یعنی اسمش پاک میشود. دفعهی بعدی که بپرسید، آن ربات با یک اسم تصادفی تازه پاسخ میدهد.
اسمها باید تصادفی باشند: نباید از یک ترتیب قابل پیشبینی پیروی کنند. استفاده از اسمهای تصادفی با خطر تداخل همراه است. راهحل شما باید مطمئن شود که هر ربات موجود اسمی یکتا دارد.
برای کامل کردن این تمرین، باید نوع دادهی Robot را بهصورت یک متغیر تغییرپذیر و نوع دادهی RunState را بسازید. همچنین باید توابع زیر را پیادهسازی کنید:
initialStatemkRobotresetNamerobotNameیک اعلان دادهی ساختگی و امضاهای نوع از قبل در جای خود قرار دارند، اما این شمایید که باید توابع را تعریف کنید و یک نوع داده، newtype یا type synonym معنادار بسازید. این تمرین برای مدلسازی وضعیت از موناد State استفاده میکند. بهطور خاصتر، موناد State را با موناد IO و با استفاده از مبدلهای موناد StateT ترکیب میکنیم. همهی تستها با initialState به عنوان وضعیتی که به evalStateT داده میشود اجرا میشوند.