改写自 十分钟魔法练习-玩火 原版为 Java 实现
Rust 版 - 光量子 | C++ 版 - 图斯卡蓝瑟 | C# 版 - CWKSC | Lua 版 - Ofey Chan | Ocaml 版 - 光吟 | Python 版 - penguin_wwy | TypeScript 版 - Asuka Minato
抽象与组合
希望能在十分钟内教会你一样魔法
QQ 群:1070975853 | Telegram Group
目录中方括号里的是前置技能。
yarn
yarn test
npm i
npm test
如果整体测试过慢,就照着 package.json
里的 Continuation
手动加测试命令。
npm run Continuation
-
偏易 |Markdown |代数数据类型 (Algebraic Data Type) [TypeScript 基础]
-
偏易 |Markdown |广义代数数据类型 (Generalized Algebriac Data Type) [TypeScript 基础, ADT]
-
偏易 |Markdown |余代数数据类型 (Coalgebraic Data Type)[TypeScript 基础, ADT]
-
偏易 |Markdown |单位半群 (Monoid)[TypeScript 基础]
较难 |Markdown |高阶类型 (Higher Kinded Type)[TypeScript 基础]
- 中等 |Markdown |单子 (Monad)[TypeScript 基础, HKT]
较难 |Markdown |状态单子 (State Monad)[TypeScript 基础, HKT , Monad]
中等 |Markdown |简单类型 λ 演算 (Simply-Typed Lambda Calculus)[TypeScript 基础, ADT ,λ 演算]
中等 |Markdown |系统 F(System F)[TypeScript 基础, ADT ,简单类型 λ 演算]
中等 |Markdown | 系统 F ω(System F ω)[TypeScript 基础, ADT ,系统 F]
较难 |Markdown |构造演算 (Calculus of Construction)[TypeScript 基础, ADT ,系统 F ω]
- 偏易 |Markdown |Π 类型和 Σ 类型 (Pi type & Sigma type)[ADT ,构造演算]
较难 |Markdown |λ 演算 (Lambda Calculus)[TypeScript 基础, ADT]
较难 |Markdown |De Bruijn 索引 (De Bruijn index)[TypeScript 基础,ADT,λ 演算]
偏易 |Markdown | 求值策略 (Evaluation Strategy)[TypeScript 基础, λ 演算]
较难 |Markdown |丘奇编码 (Church Encoding)[λ 演算]
很难 |Markdown |斯科特编码 (Scott Encoding)[构造演算, ADT , μ]
中等 |Markdown |Y 组合子 (Y Combinator)[TypeScript 基础,λ 演算,λ 演算编码]
中等 |Markdown |μ(Mu)[TypeScript 基础,构造演算, Y 组合子]
中等 |Markdown |向量和有限集 (Vector & FinSet)[构造演算, ADT ,依赖类型模式匹配]
- 偏易 |Markdown |Curry-Howard 同构 (Curry-Howard Isomorphism)[构造演算]
偏难 |Markdown |莱布尼兹相等性 (Leibniz Equality)[构造演算]
-
简单 |Markdown |表驱动编程 (Table-Driven Programming)[简单 TypeScript 基础]
-
简单 |Markdown |续延 (Continuation)[简单 TypeScript 基础]
-
中等 |Markdown |代数作用 (Algebraic Effect)[简单 TypeScript 基础,续延]
中等 |Markdown |依赖注入 (Dependency Injection)[TypeScript 基础, Monad ,代数作用]
中等 |Markdown |提升 (Lifting)[TypeScript 基础, HKT , Monad]
较难 |Markdown |解析器单子 (Parser Monad)[TypeScript 基础, HKT , Monad]
中等 |Markdown |解析器组合子 (Parser Combinator)[TypeScript 基础, HKT , Monad]