JavaScript Y-Combinator

in ES6

by wuct

JavaScript

const fix = le => {
	return (f => f(f))(
  	f => le(x => f(f)(x))
  )
};


const genFib = f => n => {
  if (n === 0) return 0
  if (n === 1) return 1
  return f(n - 1) + f(n - 2)
}

const fib = fix(genFib)

const result =  fib(10)

console.log('result', result)