The Paradox of Partial Parametricity

Domenic Denicola domenic at
Wed May 22 18:04:50 PDT 2013

I found it [a fun exercise]( to show how little code it takes to build unabashed monadic promises on top of Q-like promises. (It's been a while since I exercised those brain-muscles, so any corrections appreciated.) The punch line is
function unit(x) {
    return Q({ x });

function bind(m, f) {
    return m.then({ x } => f(x));

My interpretation of this exercise---apart from the fact that I miss doing mathematical proofs---is that, since it's so little code to implement unabashed monadic promises on top of Q-like promises, and Q-like promises have proven their worth in JavaScript whereas unabashed monadic promises have not, it makes much more sense to standardize on Q-like promises as the base, and leave unabashed monadic promises to user-space libraries.

(Abashed monadic promises are, of course, a failure mode of standardization---as Mark points out---and not really worth considering.)

More information about the es-discuss mailing list