小學

小學

簡單

說明

根據學生的名字以及他們所屬的年級,為學校建立一份名冊。

最後,你應該能夠:

  • 把學生的名字加入某個年級的名冊
    • 「把 Jim 加入二年級。」
    • 「好的。」
  • 取得某個年級中所有學生的清單
    • 「二年級有哪些學生?」
    • 「目前只有 Jim 而已。」
  • 取得所有年級中所有學生的排序清單。 年級應依 1、2、3 等順序排序,而同一個年級裡的學生則應按名字的字母順序排序。
    • 「目前全校有哪些學生?」
    • 「讓我想想。 一年級有 Anna、Barb 和 Charlie,二年級有 Alex、Peter 和 Zoe,五年級有 Jim。 所以答案是:Anna、Barb、Charlie、Alex、Peter、Zoe 和 Jim」

請注意,我們的學生都只有一個名字(小鎮就是這樣,不然呢?),而且同一位學生不能在同一個年級或名冊裡被重複加入。 事實上,當測試試圖重複加入同一位學生時,你的實作應該指出這是錯誤的。

提示

要完成這個練習,你需要建立資料型態 School,並實作下列函式:

  • add
  • empty
  • grade
  • sorted

檔案裡已經有虛設的資料宣告和型別簽章,但定義這些函式、建立有意義的資料型態、newtype 或型別同義詞,都得靠你自己。


出處

與 Phil Battos 在 gSchool 的一次結對練習
透過 GitHub 編輯 連結會在新視窗或分頁中開啟
Haskell Exercism

準備好開始 小學 了嗎?

註冊 Exercism,透過 107 個練習 和真人引導來學習並精通 Haskell,全部免費。