Giter Club home page Giter Club logo

magic-in-ten-mins's Introduction

十分钟魔法练习

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

抽象与组合

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

QQ群:1070975853 | Telegram Group

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

类型系统

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

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

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

偏易 | Markdown | HTML | 单位半群(Monoid) [Java 基础]

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

中等 | Markdown | HTML | 单子(Monad) [Java 基础, HKT]

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

中等 | Markdown | HTML | 简单类型 λ 演算(Simply-Typed Lambda Calculus) [Java 基础, ADT ,λ 演算]

中等 | Markdown | HTML | 系统 F(System F) [Java 基础, ADT ,简单类型 λ 演算]

中等 | Markdown | HTML | 系统 F ω(System F ω) [Java 基础, ADT ,系统 F]

较难 | Markdown | HTML | 构造演算(Calculus of Construction) [Java 基础, ADT ,系统 F ω]

偏易 | Markdown | HTML | Π 类型和 Σ 类型(Pi type & Sigma type) [ADT ,构造演算]

计算理论

较难 | Markdown | HTML | λ 演算(Lambda Calculus) [Java 基础, ADT]

较难 | Markdown | HTML | De Bruijn 索引(De Bruijn index) [Java 基础,ADT,λ 演算]

偏易 | Markdown | HTML | 求值策略(Evaluation Strategy) [Java 基础, λ 演算]

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

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

中等 | Markdown | HTML | Y 组合子(Y Combinator) [Java 基础,λ 演算,λ 演算编码]

中等 | Markdown | HTML | μ(Mu) [Java 基础,构造演算, Y 组合子]

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

形式化验证

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

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

编程范式

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

简单 | Markdown | HTML | 续延(Continuation) [简单 Java 基础]

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

中等 | Markdown | HTML | 依赖注入(Dependency Injection) [Java 基础, Monad ,代数作用]

中等 | Markdown | HTML | 提升(Lifting) [Java 基础, HKT , Monad]

编译原理

较难 | Markdown | HTML | 解析器单子(Parser Monad) [Java 基础, HKT , Monad]

中等 | Markdown | HTML | 解析器组合子(Parser Combinator) [Java 基础, HKT , Monad]

magic-in-ten-mins's People

Contributors

geekya215 avatar niltok avatar photonquantum avatar tiancaiamao avatar tonyxty avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

magic-in-ten-mins's Issues

关于 StateMonad 的实现与 fib 的例子

我对 put 的实现有一些疑问(

// 写入
HKT<State<S, ?>, S> put(S s) {
    return new State<>(any -> 
        new State.StateData<>(any, s));
}

不过我看到 Haskell 的实现是这样的:

-- ie: (put 5) 1 -> ((),5)
put :: s -> State s ()
put x s = ((),x)

可以看到 haskell 的实现里在 put 的时候把 result 置空了,不知道哪种才是常规的实现。

static int fib(int n) {
    int[] a = {0, 1, 1};
    for (int i = 0; i < n; i++)
        a[(i + 2) % 3] = a[(i + 1) % 3] + 
                         a[i % 3];
    return a[(n + 1) % 3];
}

好像会算成 F(n+1) (

想法真挺好,不过...

可以PR硬件电路、Linux驱动编写的内容吗,比如我有快速入门系列的文章,比如”手撕运放“等,想PR,但这里好像都是java的软件的,好像画风差别有点大...

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.