Y-Combinator

// combinator literal
f => (x => x(x))(x => f(y => x(x)(y)))

function combine (fn) {
	function combinate () {
		return fn(y => combinate()(y))
	}
	return combinate()
}

const Y =
	f => (x => x(x))(x => f(y => x(x)(y)))

function recursive (fn) {
	return fn(next => recursive(fn)(next))
}

const fibinanci = recursive(
	recurse => n => (
		n <= 2
			? 1
			: recurse(n-1) + recurse(n-2)
	)
);

console.log(number)