اسم ربات

اسم ربات

متوسط

دستورالعمل‌ها

تنظیمات کارخانه‌ی ربات را مدیریت کنید.

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

اولین باری که رباتی را روشن می‌کنید، یک اسم تصادفی به این شکل تولید می‌شود: دو حرف بزرگ و بعد سه رقم، مثل RX837 یا BC811.

هر چند وقت یک‌بار لازم است رباتی را به تنظیمات کارخانه‌اش برگردانیم، یعنی اسمش پاک می‌شود. دفعه‌ی بعدی که بپرسید، آن ربات با یک اسم تصادفی تازه پاسخ می‌دهد.

اسم‌ها باید تصادفی باشند: نباید از یک ترتیب قابل پیش‌بینی پیروی کنند. استفاده از اسم‌های تصادفی با خطر تداخل همراه است. راه‌حل شما باید مطمئن شود که هر ربات موجود اسمی یکتا دارد.

راهنمایی‌ها

برای کامل کردن این تمرین، باید نوع داده‌ی Robot را به‌صورت یک متغیر تغییرپذیر و نوع داده‌ی RunState را بسازید. همچنین باید توابع زیر را پیاده‌سازی کنید:

  • initialState
  • mkRobot
  • resetName
  • robotName

یک اعلان داده‌ی ساختگی و امضاهای نوع از قبل در جای خود قرار دارند، اما این شمایید که باید توابع را تعریف کنید و یک نوع داده، newtype یا type synonym معنادار بسازید. این تمرین برای مدل‌سازی وضعیت از موناد State استفاده می‌کند. به‌طور خاص‌تر، موناد State را با موناد IO و با استفاده از مبدل‌های موناد StateT ترکیب می‌کنیم. همه‌ی تست‌ها با initialState به عنوان وضعیتی که به evalStateT داده می‌شود اجرا می‌شوند.


منبع

یک جلسه‌ی debug با Paul Blackwell در gSchool.
ویرایش از طریق GitHub این لینک در پنجره یا زبانه‌ی جدیدی باز می‌شود
Haskell Exercism

آماده‌اید اسم ربات را شروع کنید؟

در Exercism ثبت‌نام کنید تا Haskell را همراه با 107 تمرین و مربی‌گری انسانی واقعی یاد بگیرید و در آن استاد شوید، همه‌ی این‌ها رایگان.