使用者工具

網站工具


learn:functional-programming

差異處

這裏顯示兩個版本的差異處。

連向這個比對檢視

兩邊的前次修訂版前次修改
下次修改
前次修改
learn:functional-programming [2022/06/20 14:28] admin_wi1d5kylearn:functional-programming [2022/06/21 08:47] (目前版本) admin_wi1d5ky
行 1: 行 1:
-# Functional Programming+# Functional Programming 筆記 
 +## Library
  
 +- [Ramda](https://www.npmjs.com/package/ramda)
 +- [fp-ts](https://www.npmjs.com/package/fp-ts)
  
-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 | #TODO |
 +| Identity | #TODO |
 +| IO | 處理永不失敗的同步計算 |
 +| Maybe | 處理無值情境 |
 +| Reader | #TODO |
 +| Tuple | #TODO |
 +| State | #TODO |
 +
 +
 +### Either
 +
 +  * 處理錯誤情境
 +  * 分成 `Either.Right` 和 `Either.Left`
 +  * `Either.Right` 會繼續跑,而 `Either.Left` 則會忽略後續運算,執意將手上的值傳下去
 +  * <https://ithelp.ithome.com.tw/articles/10279389>
 +
 +```javascript
 +const addOne = num => Right(R.add(1));
 +const error = () => Left(new Error('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
 +
 +  * 處理永不失敗的同步計算
 +  * <https://ithelp.ithome.com.tw/articles/10278925>
 +
 +### Maybe
 +
 +  * 處理無值情境 ( null || undefined )
 +  * <https://ithelp.ithome.com.tw/articles/10277399>
 +
 +### Reader
 +  * 用來避免中間傳送無用的 `dep`
 +  * <https://ithelp.ithome.com.tw/articles/10280177>
 +
 +### Tuple
 +
 +> TODO
 +
 +
 +### State
 +
 +    * <https://ithelp.ithome.com.tw/articles/10280554>
 +
 +
 +
 +
 +## Articles
 +
 +- <https://ithelp.ithome.com.tw/users/20140431/ironman/4122?page=1>
 +- <https://medium.com/hannah-lin/9edc7d705c3f>
 - <https://medium.com/@mirkomariani/e83e54fcd86b> - <https://medium.com/@mirkomariani/e83e54fcd86b>
 - <https://medium.com/let-s-learn/5db457997554> - <https://medium.com/let-s-learn/5db457997554>
 +
 +
 +
learn/functional-programming.1655735302.txt.gz · 上一次變更: 2022/06/20 14:28 由 admin_wi1d5ky

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki