跳轉到內容

Haskell/主題列表

來自華夏公益教科書

以下是非詳盡的主題列表,涵蓋了本書模組(截至目前,涵蓋前三章)。目前它主要作為一種工具,使貢獻者更容易將整本書的結構視覺化,但希望它最終能演變成一份完整的學習指南。

Haskell 基礎
舊結構
  • 設定
    • 安裝和啟動
  • 變數和函式
    • 變數和函式簡介(首次接觸型別)
    • 變數的不可變性
  • 列表和元組
    • 列表簡介
    • 使用 (:) 構建列表
    • 元組簡介(帶模式匹配的第一個示例)
  • 下一步
    • 原始檔
    • 控制結構簡介(if / case,帶 PM 的預告)
    • 分段函式定義
    • 函式組合
    • let 繫結
  • 型別基礎
    • 簡介 / 動機
    • 簡單示例(帶數字類的預告)
    • 函式型別
    • 多型型別簡介
    • 型別簽名
    • 型別推斷
  • 簡單輸入和輸出
    • 簡介 / 動機
    • 操作
    • 操作和型別
    • IO 跟蹤指標
新結構
  • 設定
    • 安裝和啟動
    • GHCi 作為計算器
  • 定義函式
    • 原始檔
    • 定義簡介(函式、變數),首次接觸型別
    • 僅使用 Int 的示例
    • where 子句,佈局
    • 變數的不可變性
  • 真值(用於定義更有趣的函式)
    • 布林值示例 1 == 2
    • 保護
    • 更多示例
  • 型別基礎
    • 簡介 / 動機 False < 2
    • 型別簽名,型別推斷
    • Int、Bool、函式型別
    • 多型型別簡介,提及用於過載的數值類,Double 用於浮點數
  • 元組和列表
    • 元組簡介(模式匹配) - 有助於返回多個結果
    • 列表是頭部 + 尾部,(:) 和 []
    • 模式匹配:(:) 和 [] 也可以用在左側
  • 構建詞彙表
    • 所有語法片段都已就位,解釋說讀者現在必須學習許多型別和函式
    • 示例程式,練習!
    • 備忘單:Prelude 型別、Prelude 函式,按類別排序。每個類別都附帶簡短的解釋 / 概念 / 函式概述;連結到後續章節以獲取更詳細的解釋。 不確定如何組織這個
      • 函式
      • 列表
      • 字串
      • 輸入 / 輸出
  • 使用列表
    • 列表推導
  • 簡單輸入和輸出
    • 簡介 / 動機
    • 操作
    • 操作和型別
    • IO 跟蹤指標


Haskell 初級
舊結構
  • 遞迴
    • 遞迴簡介
    • 基於列表的遞迴(第一個 PM 在列表上的示例)
  • 更多關於列表
    • 構建和修改列表(螺旋式回顧,需要簡化,預告柯里化)
    • 點點符號
    • 無限列表(首次提及惰性)
    • head / tail
    • map(首次提及無點風格;介紹部分函式,但不進行註釋)
  • 列表處理
    • 摺疊(第一個資料結構分析,更多關於惰性的討論)
    • 掃描
    • 過濾
    • 列表推導(也許 PM 示例需要美化)
  • 型別宣告
    • 簡介 / 動機
    • data / 建構函式
    • 代數資料型別解構(大量隱式 PM 使用)
    • type
  • 模式匹配
    • 詳細解釋 PM
    • 建構函式和 PM
    • 記錄簡介
    • 作為模式
    • 使用字面量的 PM
    • PM 示例
  • 控制結構
    • if 的弱螺旋式回顧(幾乎多餘)
    • case 的螺旋式回顧(考慮 PM,與分段比較)
    • 保護
  • 更多關於函式
    • let / where(被視為私有函式定義)
    • lambda 表示式
    • 中綴與字首(首次明確提及語法變體)
  • 高階函式
    • 快速排序示例
    • 型別簽名的結合律(帶一個非常難的練習)
    • 柯里化
新結構
  • 遞迴
    • 這可能適合放在基礎部分,列表兩個模組之間,也許?
    • 遞迴簡介
    • 基於列表的遞迴
  • 更多關於函式
    • 將它和控制結構放在章節末尾似乎很不自然。
    • let / where(被視為私有函式定義)
    • lambda 表示式(請注意,所有模式匹配示例都應該理想地返回模式匹配)
    • 中綴與字首(首次明確提及語法變體)
  • 更多關於列表
    • 初級中的現有列表模組之一可能會被合併。
    • 點點符號
    • 無限列表
    • map / filter( 或者放在基礎中,與推導一起?
    • 摺疊 / 掃描(第一個資料結構分析,更多關於惰性的討論)
  • 型別宣告
    • 簡介 / 動機
    • data / 建構函式
    • 代數資料型別解構
    • type
  • 模式匹配
    • 詳細解釋 PM
    • 建構函式和 PM
    • 記錄簡介
    • 作為模式
    • 使用字面量的 PM
    • PM 示例
  • 控制結構
    • 有了新的基礎,本章更有意義了
    • if / then / else 及與保護的比較
    • case 及與分段的比較
  • 縮排
    • 適合附近關於語法的模組。
    • 事實上,我甚至可以看到它如何被合併到一個簡化的控制結構版本中
    • 佈局
    • 轉換為 C 風格
  • 有效使用 GHCi
Haskell 中級
舊結構
  • 模組
    • 簡介 / 動機
    • 匯入
    • 匯出
  • 縮排
    • 佈局
    • 轉換為 C 風格
  • 更多關於資料型別
    • 列舉(不使用派生上下文 - 第一次使用派生)
    • 記錄
    • 引數化型別(應重點關注在建構函式中的使用)
    • (newtype 缺失)
    • 樹(及其 map 和 fold)
    • 用於任意資料型別的 map 和 fold
  • 類宣告
    • 派生
    • 繼承
    • Prelude 類(僅圖示)
    • (極其缺乏對數字類的討論)
  • 類和型別
    • 型別約束(在簽名、建構函式和例項上。提及 newtype)
    • (類似於存根的模組)
  • 跟蹤狀態
    • (空,應該刪除?)
新結構
  • 模組
    • 簡介 / 動機
    • 匯入
    • 匯出
  • 構建獨立應用程式
    • 目前在 Haskell 實踐/通用實踐中。這絕對應該在初學者路線中。
  • 高階函式
    • 將這個模組放在初級末尾讓人感覺有點受限制
    • 快速排序示例
    • 型別簽名的結合律(帶一個非常難的練習)
    • 柯里化
  • 更多關於資料型別
    • 列舉(不使用派生上下文 - 第一次使用派生)
    • 記錄
    • 引數化型別(應重點關注在建構函式中的使用)
    • (newtype 缺失)
  • 其他資料結構
    • 樹(及其 map 和 fold)
    • 用於任意資料型別的 map 和 fold( 臨時位置
    • 當前關於類的模組之間的劃分似乎是任意的,因此本提案將它們合併。
    • 類宣告
    • 繼承
    • 型別約束(在簽名、建構函式和例項上。提及 newtype)
    • 派生(請注意主題順序的改變)
  • 標準類
    • 該想法是將當前在類宣告中的圖示擴充套件到一個完整的模組。
    • 這可能是探索 Prelude 型別比 Haskell 基礎備忘單更自然的位置
    • 此外,如果將派生也移到這裡,可能更適合(儘管這可能會使模組過長)

注意:應該刪除跟蹤狀態,在沒有對單子進行適當討論的情況下,嘗試建立這樣的模組可能沒有充分的理由。

華夏公益教科書