learn:functional-programming
差異處
這裏顯示兩個版本的差異處。
兩邊的前次修訂版前次修改 下次修改 | 前次修改 | ||
learn:functional-programming [2022/06/21 16:19] – admin_wi1d5ky | learn:functional-programming [2024/12/22 21:17] (目前版本) – 外部編輯 127.0.0.1 | ||
---|---|---|---|
行 3: | 行 3: | ||
- [Ramda](https:// | - [Ramda](https:// | ||
- | - [Ramda Fantasy](https:// | + | - [fp-ts](https:// |
行 16: | 行 16: | ||
## Functor | ## Functor | ||
+ | |||
+ | |||
+ | ^ ADT ^ Effect ^ | ||
+ | | Either | 處理錯誤情境 | | ||
+ | | Future | # | ||
+ | | Identity | # | ||
+ | | IO | 處理永不失敗的同步計算 | | ||
+ | | Maybe | 處理無值情境 | | ||
+ | | Reader | # | ||
+ | | Tuple | # | ||
+ | | State | # | ||
行 24: | 行 35: | ||
* `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 | ### Future | ||
> TODO | > TODO | ||
+ | |||
### Identity | ### Identity | ||
> TODO | > TODO | ||
+ | |||
### IO | ### IO | ||
行 50: | 行 79: | ||
> TODO | > TODO | ||
+ | |||
### State | ### State |
learn/functional-programming.1655799552.txt.gz · 上一次變更: 2024/12/22 21:17 (外部編輯)