difference between chain and ap
chain(concat, toUpper)('a') // => "Aa" ap(concat, toUpper)('a') // => "aA" // chain = k => f => r => k(f(r))(r) // ap = k => f => r => k(r)(f(r))