Gère les paramètres d'usine des robots.
Quand un robot sort de l'usine, il n'a pas de nom.
La première fois qu'on allume un robot, un nom aléatoire lui est attribué, au format de deux lettres majuscules suivies de trois chiffres, comme RX837 ou BC811.
De temps en temps, il faut réinitialiser un robot à ses paramètres d'usine, ce qui efface son nom. La prochaine fois que tu lui demandes son nom, ce robot te répondra avec un nouveau nom aléatoire.
Les noms doivent être aléatoires : ils ne doivent pas suivre une séquence prévisible. Utiliser des noms aléatoires comporte un risque de collisions. Ta solution doit garantir que chaque robot existant possède un nom unique.
Pour venir à bout de cet exercice, tu dois créer le type de données Robot, sous la forme d'une variable mutable, ainsi que le type de données RunState. Tu dois également implémenter les fonctions suivantes :
initialStatemkRobotresetNamerobotNameTu trouveras une déclaration de données factice et des signatures de type déjà en place, mais c'est à toi de définir les fonctions et de créer un type de données, un newtype ou un synonyme de type qui ait du sens. Pour modéliser l'état, cet exercice utilise la monade State. Plus précisément, on combine la monade State avec la monade IO grâce aux transformateurs de monade StateT. Tous les tests sont exécutés avec initialState comme état fourni à evalStateT.
Inscris-toi sur Exercism pour apprendre et maîtriser Haskell avec 107 exercices, et un vrai mentorat humain, le tout gratuitement.