Fantasy Land spec: `v.ap(u.ap(a.map(f => g => x => f(g(x)))))` is equivalent to `v.ap(u).ap(a)` (composition) Implementation: `const v = Task.of(f => g => x => f(g(x)))` `const u = Task.of(x => x * 3)` `const a = Task.of(x => x + 3)` `v` ` .ap(u` ` .ap(a` ` .map(f => g => x => f(g(x)))))` ` .fork(console.error, console.log)` Log: g => x => f(g(x)) `v` ` .ap(u)` ` .ap(a)` ` .fork(console.error, console.log)` Log: x => f(g(x))
Fantasy Land spec:
v.ap(u.ap(a.map(f => g => x => f(g(x)))))is equivalent tov.ap(u).ap(a)(composition)Implementation:
const v = Task.of(f => g => x => f(g(x)))const u = Task.of(x => x * 3)const a = Task.of(x => x + 3)v.ap(u.ap(a.map(f => g => x => f(g(x))))).fork(console.error, console.log)Log: g => x => f(g(x))
v.ap(u).ap(a).fork(console.error, console.log)Log: x => f(g(x))