- 新增pipeLogger & composeLogger兩種日誌追蹤的方法
- 稍微簡短了pipe & compose & pipeLogger & composeLogger的程式
- 新增
eq method
- 將 Document 修改成
Hindley-Milner 簽名
- Add Curry Method
class youDomModule extends lazyPointfree(Polymer.Element){
get oneParam(){
return this.pipe(
fn1,
fn2,
fnN
)
}
multiParam(param1, param2){
return this.pipe(
fn1,
fn2,
fnN
)(param)
}
}
youClass = (su) => class extends lazyPointfree(su) {
youMethod(){
return (val) => {
return val;
}
}
}
class youDomModule extends youClass(Polymer.Element){
}
//items = [1,2,3,4,5]
[[sumAll(items)]] => 15
[[sumGtNum(items, 3)]] => 9
class extends lazyPointfree(Polymer.Element){
//省略…
// 一個參數的情況下(ex1.html)
// [[sum(items)]]
get sumAll() {
return this.pipe(
this.sum
)
}
//複合參數的情況下 (此案例將計算大於num之陣列總合)
//[[sum(items, num)]]
sumGtNum(items, num){
return this.pipe(
this.filter(this.gt(num)),
this.sum
)(items)
}
}
- 更多更多的方法 😂😂
由右至左執行 result <= fn1 <= fn2 <= fnN <= value;
由左至右執行 value => fn1 => fn2 => fnN => result
將Function Curry化
let fn = (a,b,c) => {
return a*b*c;
}
let curryFn = curry(fn);
console.log(curryFn(1, 2, 3)); //allow 6
console.log(curryFn(1, 2)(3)); //allow 6
console.log(curryFn(1)(2, 3)); //allow 6
console.log(curryFn(1)(2)(3)); //allow 6
console.log("allow", curryFn(1, 2, 3, 4)); //allow 6
console.log("error", curryFn(1)(2)(3)(4)); //Error