Gere as configurações de fábrica dos robôs.
Quando um robô sai da linha de montagem, não tem nome.
Da primeira vez que ligas um robô, é gerado um nome aleatório no formato de duas letras maiúsculas seguidas de três algarismos, como RX837 ou BC811.
De vez em quando, é preciso repor um robô nas configurações de fábrica. Isso faz com que o nome seja apagado. Da próxima vez que perguntas, o robô responde com um novo nome aleatório.
Os nomes têm de ser aleatórios: não devem seguir uma sequência previsível. Usar nomes aleatórios implica um risco de colisões. A tua solução tem de garantir que todos os robôs existentes têm um nome único.
Para completar este exercício, precisas de criar o tipo de dados Robot,
como uma variável mutável, e o tipo de dados RunState. Também precisas de
implementar as seguintes funções:
initialStatemkRobotresetNamerobotNameVais encontrar uma declaração de dados fictícia e assinaturas de tipo já
preparadas, mas cabe-te a ti definir as funções e criar um tipo de dados com
significado, um newtype ou um sinónimo de tipo. Para modelar o estado, este
exercício usa a
mónada State.
Mais concretamente, combinamos a mónada State com a mónada IO recorrendo
aos transformadores de mónada StateT.
Todos os testes são executados com initialState como o estado que é
passado ao evalStateT.
Inscreve-te no Exercism para aprenderes e dominares Haskell com 107 exercícios, e mentoria humana real, tudo grátis.