改写自十分钟魔法练习(玩火), 原版为java实现
其他版本:Rust版 - 光量子 | C#版-CWKSC
抽象与组合
希望能在十分钟内教会你一样魔法
QQ群:1070975853 | Telegram Group
目录中方括号里的是前置技能。 本文的c++版本在无特殊声明的情况下为c++11
偏易 | 代数数据类型(Algebraic Data Type)[C++面向对象基础]
偏易 | 广义代数数据类型(Generalized Algebriac Data Type)[C++面向对象基础,ADT]
偏易 | 余代数数据类型(Coalgebraic Data Type)[C++面向对象基础,ADT]
较难 | 高阶类型(Higher Kinded Type)[C++面向对象基础,模板基础]
较难 | 状态单子(State Monad)[C++面向对象基础,HKT,Monad]
中等 | 简单类型 λ 演算(Simply-Typed Lambda Calculus)[C++面向对象基础,ADT,λ 演算]
中等 | 系统 F(System F)[C++面向对象基础,ADT,简单类型 λ 演算]
较难 | 构造演算(Calculus of Construction)[C++面向对象基础, ADT ,系统 F ω]
偏易 | π 类型和 Σ 类型(Pi type & Sigma type)[ADT ,构造演算]
较难 | λ 演算(Lambda Calculus)[C++面向对象基础,ADT]
偏易 | 求值策略(Evaluation Strategy)[C++面向对象基础,λ演算]
较难 | 编码(Encode)[λ演算]
中等 | Y 组合子(Y Combinator)[C++面向对象基础,λ 演算,λ 演算编码]
中等 | μ(Mu)[C++面向对象基础,构造演算, Y 组合子]
简单 | 表驱动编程(Table-Driven Programming)[简单C++面向对象基础]
简单 | 续延(Continuation)[简单C++面向对象基础]
中等 | 代数作用(Algebraic Effect)[简单C++面向对象基础,续延]
中等 | 依赖注入(Dependency Injection)[C++面向对象基础,Monad,代数作用]
中等 | 提升(Lifting)[C++面向对象基础,HKT,Monad]
较难 | 解析器单子(Parser Monad)[C++面向对象基础,HKT,Monad]
中等 | 解析器组合子(Parser Combinator)[C++面向对象基础,HKT,Monad]