使用者工具

網站工具


learn:functional-programming

差異處

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

連向這個比對檢視

下次修改
前次修改
learn:functional-programming [2022/06/20 14:23] – 建立 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) 
 + 
 + 
 +## 值 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/let-s-learn/5db457997554> 
  
  
-- [React + Ramda](https://medium.com/@mirkomariani/e83e54fcd86b) 
learn/functional-programming.1655735026.txt.gz · 上一次變更: 2022/06/20 14:23 由 admin_wi1d5ky

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki