GitXplorerGitXplorer
a

magic-in-ten-mins-ts

public
7 stars
1 forks
1 issues

Commits

List of commits on branch master.
Unverified
6f803733f9f6eaf297dacb1d63cac01effebd266

add monad

aasukaminato0721 committed 2 years ago
Unverified
8b81f7b212d518074bf7de786b4cb4241c55019e

simplify some code.

aasukaminato0721 committed 2 years ago
Unverified
20f60ac2084d1b850902c43a5117d67eac72c91c

GADT

aasukaminato0721 committed 2 years ago
Unverified
dd4aa8b7f34c37550c12d9441dfda79a1846fb6e

update readme

aasukaminato0721 committed 2 years ago
Unverified
d953021784d982cad3e0b5e8fdf1fbee5b2f7a61

pangu format

aasukaminato0721 committed 2 years ago
Unverified
9ac61ad5b318034a28bec98807162e1bc2bdb626

Continuation

aasukaminato0721 committed 2 years ago

README

The README file for this repository.

十分钟魔法练习

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

Rust 版 - 光量子 | C++ 版 - 图斯卡蓝瑟 | C# 版 - CWKSC | Lua 版 - Ofey Chan | Ocaml 版 - 光吟 | Python 版 - penguin_wwy | TypeScript 版 - Asuka Minato

抽象与组合

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

QQ 群:1070975853 | Telegram Group

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

Usage

yarn

yarn
yarn test

npm

npm i
npm test

如果整体测试过慢,就照着 package.json 里的 Continuation 手动加测试命令。

npm run Continuation

类型系统

  • [x] 偏易 |Markdown |代数数据类型 (Algebraic Data Type) [TypeScript 基础]

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

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

  • [x] 偏易 |Markdown |单位半群 (Monoid)[TypeScript 基础]

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

  • [x] 中等 |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 ω]

  • [x] 偏易 |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 ,依赖类型模式匹配]

形式化验证

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

偏难 |Markdown |莱布尼兹相等性 (Leibniz Equality)[构造演算]

编程范式

  • [x] 简单 |Markdown |表驱动编程 (Table-Driven Programming)[简单 TypeScript 基础]

  • [x] 简单 |Markdown |续延 (Continuation)[简单 TypeScript 基础]

  • [x] 中等 |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]