- Function 必須作為一級公民。意即,Function 可以像一般變數一般被當作參數傳入、被當作結果輸出、被任意 assign 給其他變數、被任意進行運算。
- Function 中只能有 Expression 而非指令( instructions )。
- Function 必須是 「Pure」、沒有 Side Effect。
- Function 「不可改變 Input 的資料」、「不可 改變狀態」。
- Function 「可以任意『組合』得到新的 Function,且依然滿足以上這些守則」。
- Function 可以儲存在變數中
- Function 可作為回傳結果
- Instructions 就是跟程式說你該怎麼做,例如 for
- Expression 就是跟程式說我想要得到什麼,例如 map, reduce
- Function 的輸入是什麼輸出就是什麼,不會因為外部狀態或者是時間而改變輸出。
- Function 不應該修改 input 的資料。
- 隨意將兩個 function 組合起來也必須符合上述條件
Reference