Gestisci le impostazioni di fabbrica dei robot.
Quando un robot esce dalla catena di montaggio, non ha un nome.
La prima volta che accendi un robot, viene generato un nome casuale nel formato di due lettere maiuscole seguite da tre cifre, come RX837 o BC811.
Ogni tanto dobbiamo ripristinare un robot alle impostazioni di fabbrica, il che significa che il suo nome viene cancellato. La prossima volta che lo chiedi, quel robot risponderà con un nuovo nome casuale.
I nomi devono essere casuali: non devono seguire una sequenza prevedibile. Usare nomi casuali comporta un rischio di collisioni. La soluzione deve garantire che ogni robot esistente abbia un nome univoco.
Per completare questo esercizio, devi creare il tipo di dato Robot,
come variabile mutabile, e il tipo di dato RunState. Devi inoltre
implementare le seguenti funzioni:
initialStatemkRobotresetNamerobotNameTroverai una dichiarazione di dati fittizia e le firme di tipo già presenti,
ma sta a te definire le funzioni e creare un tipo di dato, un newtype o un
sinonimo di tipo significativo. Per modellare lo stato, questo esercizio usa la
monade State.
Più precisamente, combiniamo la monade State con la monade IO usando i
trasformatori di monade StateT.
Tutti i test vengono eseguiti con initialState come stato passato a evalStateT.
Iscriviti a Exercism per imparare e padroneggiare Haskell con 107 esercizi e il mentoring di persone reali, tutto gratis.