Треки
/
Haskell
Haskell
/
Вправи
/
Імʼя робота
Імʼя робота

Імʼя робота

Середня

Вказівки

Керуйте фабричними налаштуваннями робота.

Коли робот сходить з конвеєра фабрики, у нього немає імені.

Коли ми вперше вмикаємо робота, генерується випадкове імʼя у форматі двох великих літер, за якими йдуть три цифри, наприклад RX837 або BC811.

Час від часу нам потрібно скинути робота до фабричних налаштувань, а це означає, що його імʼя стирається. Наступного разу, коли ми запитаємо, робот відповість новим випадковим іменем.

Імена мають бути випадковими: вони не повинні йти у передбачуваній послідовності. Використання випадкових імен означає ризик збігів. Ваше рішення має гарантувати, що кожен наявний робот має унікальне імʼя.

Підказки

Щоб виконати цю вправу, потрібно створити тип даних Robot як змінну, яку можна змінювати, і тип даних RunState. Також потрібно реалізувати такі функції:

  • initialState
  • mkRobot
  • resetName
  • robotName

Уже є фіктивне оголошення даних і сигнатури типів, але функції потрібно визначити самостійно, як і створити змістовний тип даних, newtype або синонім типу. Щоб змоделювати стан, ця вправа використовує монаду State. Точніше, монаду State ми поєднуємо з монадою IO за допомогою трансформерів монад StateT. Усі тести запускаються з initialState як станом, який передається в evalStateT.


Джерело

Сеанс налагодження з Paul Blackwell у gSchool.
Редагувати через GitHub Посилання відкривається в новому вікні або вкладці
Haskell Exercism

Час розпочати Імʼя робота?

Зареєструйтеся на Exercism, щоб вивчати й опановувати Haskell, а також 107 вправ та справжнє наставництво від людей, і все це безкоштовно.