Skip to content

LighghtEeloo/magic-in-ten-mins-ml

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

十分钟魔法练习 (OCaml)

十分钟魔法练习 - 光吟

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

另有 Rust 版 - 光量子 | C++版 - 图斯卡蓝瑟 | C#版 - CWKSC | Lua 版 - Ofey Chan | Python 版 - penguin_wwy

抽象与组合

希望能在十分钟内教会你一样魔法,并尽可能展示 OCaml 的使用姿势。

虽然 Haskell 表达能力更强就是了 (( ◞•̀д•́)◞⚔◟(•̀д•́◟ ))

个人水平有限,不保证全部正确性,欢迎大家批判指正。

QQ群:1070975853 | Telegram Group

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

测试所有用例

$ dune exec ./magic.exe

类型系统

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

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

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

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

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

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

较难|状态单子(State Monad)[OCaml 基础,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]](TheoryOfComputation/Lambda.md)

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

[较难|丘奇编码(Church Encoding)[λ 演算]](TheoryOfComputation/ChurchE.md)

很难|斯科特编码(Scott Encoding)[OCaml基础,构造演算,ADT,μ]

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

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

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

形式化验证

[偏易|Curry-Howard 同构(Curry-Howard Isomorphism)[构造演算]](src/CHIso.md)

编程范式

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

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

[中等|代数作用(Algebraic Effect)[简单 OCaml 基础,续延]](Paradigms/Algeff.md)

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

[中等|提升(Lifting)[OCaml 基础,HKT,Monad]](Paradigms/Lifting.md)

编译原理

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

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

About

十分钟魔法练习 in OCaml

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages