2016-10-31

聚沙

纯函数式编程 like Haskell

强制 curry 化(柯里化)

Curry Haskell

1
2
3
4
5
6
7
8
const add = x => y => x + y

// translate
const add = function(x) {
  return function(y) {
    return x + y;
  }
}

禁用 for 循环

斐波那契

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// 以下两个版本均为低效实现方法
// 命令式用法
const fib = function(n) {
  if (n <= 1) return n;
  return fib(n-1) + fib(n-2);
}

// es6
const fibEsnext = n => n < 2 ? n : fib(n-1) + fib(n-2)

// 高效一点的方式
const store = [];
let fibCache = function(n) {

}

// 使用尾递归实现
function fibTail(n, a = 1, b = 1) {
    if (n === 0) return a

    return fibTail(n - 1, b, a + b)
}

Comments