轨道
/
Haskell
Haskell
/
练习
/
机器人名字
机器人名字

机器人名字

中等

说明

管理机器人的出厂设置。

机器人刚走下生产线时,还没有名字。

第一次启动机器人时,会随机生成一个名字,格式为两个大写字母后跟三个数字,例如 RX837 或 BC811。

偶尔我们需要把机器人重置为出厂设置,这意味着它的名字会被清除。 下次你再询问时,这个机器人会给出一个新的随机名字。

名字必须是随机的:不能遵循可预测的序列。 使用随机名字意味着存在名字冲突的风险。 你的解答必须确保每个已存在的机器人都有独一无二的名字。

提示

要完成这道练习,你需要把数据类型 Robot 创建为一个可变变量,还需要创建数据类型 RunState。你还需要实现以下函数:

  • initialState
  • mkRobot
  • resetName
  • robotName

文件里已经放好了占位的数据声明和类型签名,但定义这些函数,以及创建有意义的数据类型、newtype 或类型同义词,都要由你来做。为了对状态建模,这道练习使用了 State 单子。更具体地说,我们借助 StateT 单子转换器 把 State 单子和 IO 单子组合起来。所有测试都以 initialState 作为传给 evalStateT 的状态来运行。


来源

与 Paul Blackwell 在 gSchool 进行的一次调试会话。
通过 GitHub 编辑 链接将在新窗口或新标签页中打开
Haskell Exercism

准备好开始 机器人名字 了吗?

注册 Exercism,借助 107 个练习 和真人导师指导,学习并掌握 Haskell,全部免费。