使用函数,我们可以从任何类型中抽象出来。下面以Option
类型为例:
const Some = x => y =>
k => k(x);
const None = y =>
k => y;
const sqr = n => n * n;
const run = f => t => t(f);
const x = Some(5) (0),
y = None(0);
run(sqr) (x); // 25
run(sqr) (y); // 0
现在我想对延迟类型进行编码以在 Javascript 中获得惰性效果。但我不知道正确的方法,以及这种努力是否对 Church Encoding 有意义。这是我的第一个镜头:
const Deferred = thunk =>
k => k(thunk());
const inc = n => n + 1;
const sqr = n => n * n;
const run = f => t => t(f);
const x = Deferred(() => inc(4));
run(sqr) (x); // 25
我在这里完全处于黑暗之中。这种方法会导致任何有意义的事情吗?