learn:functional-programming
差異處
這裏顯示兩個版本的差異處。
兩邊的前次修訂版前次修改 下次修改 | 前次修改 | ||
learn:functional-programming [2022/06/20 22:28] – admin_wi1d5ky | learn:functional-programming [2024/12/22 21:17] (目前版本) – 外部編輯 127.0.0.1 | ||
---|---|---|---|
行 1: | 行 1: | ||
- | # Functional Programming | + | # Functional Programming |
+ | ## Library | ||
+ | - [Ramda](https:// | ||
+ | - [fp-ts](https:// | ||
- | React + Ramda | ||
+ | ## 值 vs Functor | ||
+ | |||
+ | ^ f ^ g ^ composition ^ | ||
+ | | pure | pure | compose(f, g) | | ||
+ | | effects | pure(unary) | f.map(g) | | ||
+ | | effects | pure(n-ary) | f1.map(g).ap(f2) | | ||
+ | | effects | effects | m.chain(f).chain(g) | | ||
+ | |||
+ | |||
+ | ## Functor | ||
+ | |||
+ | |||
+ | ^ ADT ^ Effect ^ | ||
+ | | Either | 處理錯誤情境 | | ||
+ | | Future | # | ||
+ | | Identity | # | ||
+ | | IO | 處理永不失敗的同步計算 | | ||
+ | | Maybe | 處理無值情境 | | ||
+ | | Reader | # | ||
+ | | Tuple | # | ||
+ | | State | # | ||
+ | |||
+ | |||
+ | ### Either | ||
+ | |||
+ | * 處理錯誤情境 | ||
+ | * 分成 `Either.Right` 和 `Either.Left` | ||
+ | * `Either.Right` 會繼續跑,而 `Either.Left` 則會忽略後續運算,執意將手上的值傳下去 | ||
+ | * < | ||
+ | |||
+ | ```javascript | ||
+ | const addOne = num => Right(R.add(1)); | ||
+ | const error = () => Left(new Error(' | ||
+ | |||
+ | Right(10) | ||
+ | .chain(addOne) | ||
+ | .map(R.add(2)) | ||
+ | .inspect() // Right(13) | ||
+ | | ||
+ | Right(10) | ||
+ | .chain(error) | ||
+ | .map(R.add(2)) | ||
+ | .inspect() // Left(Error: error) | ||
+ | |||
+ | ``` | ||
+ | |||
+ | ### Future | ||
+ | |||
+ | > TODO | ||
+ | |||
+ | |||
+ | ### Identity | ||
+ | |||
+ | > TODO | ||
+ | |||
+ | |||
+ | ### IO | ||
+ | |||
+ | * 處理永不失敗的同步計算 | ||
+ | * < | ||
+ | |||
+ | ### Maybe | ||
+ | |||
+ | * 處理無值情境 ( null || undefined ) | ||
+ | * < | ||
+ | |||
+ | ### Reader | ||
+ | * 用來避免中間傳送無用的 `dep` | ||
+ | * < | ||
+ | |||
+ | ### Tuple | ||
+ | |||
+ | > TODO | ||
+ | |||
+ | |||
+ | ### State | ||
+ | |||
+ | * < | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ## Articles | ||
+ | |||
+ | - < | ||
+ | - < | ||
- < | - < | ||
- < | - < | ||
+ | |||
+ | |||
+ |
learn/functional-programming.1655735302.txt.gz · 上一次變更: 2024/12/22 21:17 (外部編輯)