Skip to content

PhotonQuantum/magic-in-ten-mins-rs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

32 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

十分钟魔法练习 (Rust)

改写自 十分钟魔法练习-玩火 原版为 Java 实现

另有 C++版-图斯卡蓝瑟 | C#版-CWKSC

抽象与组合

希望能在十分钟内教会你一样魔法

QQ群:1070975853 | Telegram Group

目录中方括号里的是前置技能。

测试所有用例

$ cargo test

MSRV: Nightly

类型系统

偏易|代数数据类型(Algebraic Data Type)[Rust 基础]

偏易|广义代数数据类型(Generalized Algebriac Data Type)[Rust 基础,ADT]

偏易|余代数数据类型(Coalgebraic Data Type)[Rust 基础,ADT]

偏易|单位半群(Monoid)[Rust 基础]

较难|高阶类型(Higher Kinded Type)[Rust 基础]

中等|单子(Monad)[Rust 基础,HKT]

较难|状态单子(State Monad)[Rust 基础,HKT,Monad]

[中等|简单类型 λ 演算(Simply-Typed Lambda Calculus)[Java 基础,ADT,λ 演算]](doc/STLC.md)

[中等|系统 F(System F)[Java 基础,ADT,简单类型 λ 演算]](doc/SystemF.md)

[中等|系统 Fω(System Fω)[Java 基础,ADT,系统 F]](doc/SysFO.md)

[较难|构造演算(Calculus of Construction)[Java 基础,ADT,系统 Fω]](doc/CoC.md)

[偏易|π 类型和 Σ 类型(Pi type & Sigma type)[ADT,构造演算]](doc/PiSigma.md)

计算理论

[较难|λ演算(Lambda Calculus)[Java基础,ADT]](doc/Lambda.md)

[偏易|求值策略(Evaluation Strategy)[Java基础,λ演算]](doc/EvalStrategy.md)

较难|丘奇编码(Church Encoding)[λ 演算]

[很难|斯科特编码(Scott Encoding)[构造演算,ADT,μ](doc/ScottE.md)

[中等|Y 组合子(Y Combinator)[Java 基础,λ 演算,λ 演算编码]](doc/YCombinator.md)

[中等|μ(Mu)[Java 基础,构造演算, Y 组合子]](doc/Mu.md)

[中等|向量和有限集(Vector & FinSet)[构造演算, ADT ,依赖类型模式匹配]](doc/VecFin.md)

形式化验证

偏易|Curry-Howard 同构(Curry-Howard Isomorphism)[构造演算]

编程范式

简单|表驱动编程(Table-Driven Programming)[简单 Rust 基础]

简单|续延(Continuation)[简单 Rust 基础]

中等|代数作用(Algebraic Effect)[简单 Rust 基础,续延]

[中等|依赖注入(Dependency Injection)[Java基础,Monad,代数作用]](doc/DepsInj.md)

中等|提升(Lifting)[Rust 基础,HKT,Monad]

编译原理

[较难|解析器单子(Parser Monad)[Java基础,HKT,Monad]](doc/ParserM.md)

[中等|解析器组合子(Parser Combinator)[Java基础,HKT,Monad]](doc/Parsec.md)