Nome do robô

Nome do robô

Médio

Instruções

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.

Dicas

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:

  • initialState
  • mkRobot
  • resetName
  • robotName

Vais 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.


Fonte

Uma sessão de depuração com o Paul Blackwell na gSchool.
Editar via GitHub A ligação abre numa nova janela ou separador
Haskell Exercism

Estás pronto para começar Nome do robô?

Inscreve-te no Exercism para aprenderes e dominares Haskell com 107 exercícios, e mentoria humana real, tudo grátis.