小学

小学

简单

说明

给定学生的姓名以及他们所在的年级,为学校创建一个名册。

最终,你应该能够:

  • 把学生的姓名添加到某个年级的名册中
    • “把 Jim 加入 2 年级。”
    • “好的。”
  • 获取某个年级所有学生的列表
    • “2 年级有哪些学生?”
    • “目前只有 Jim。”
  • 获取所有年级所有学生的排序列表。 年级应按 1、2、3 等排序,同一年级内的学生应按姓名的字母顺序排序。
    • “现在全校都有哪些学生?”
    • “让我想想。 1 年级有 Anna、Barb 和 Charlie,2 年级有 Alex、Peter 和 Zoe,5 年级有 Jim。 所以答案是:Anna、Barb、Charlie、Alex、Peter、Zoe 和 Jim”

注意,我们这里的学生都只有一个名字(小镇嘛,你还想怎样?),而且每个学生都不能被重复添加到一个年级或名册中。 事实上,当测试尝试重复添加同一个学生时,你的实现应该表明这是错误的。

提示

要完成这个练习,你需要创建数据类型 School,并实现以下函数:

  • add
  • empty
  • grade
  • sorted

你会在代码中看到已经放好的示例数据声明和类型签名,但函数需要你亲自定义,并且要创建一个有意义的数据类型、newtype 或类型同义词。


来源

与 Phil Battos 在 gSchool 的一次结对编程
通过 GitHub 编辑 链接将在新窗口或新标签页中打开
Haskell Exercism

准备好开始 小学 了吗?

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