Есть вот такая вот реализация этой монады
Identity = function(value) {
this.value = value
}
Identity.prototype.bind = function(transform){
return transform(this.value)
}
new Identity(5).bind(function(value){
return new Identity(6).bind(function(value2){
return new Identity(value + value2)
})
})
Насколько я понял, идея в том, чтобы протащить через вычисления унифицированный контейнер данных. Только я не понял, зачем там столько лапши? Разве вот такой вот код не будет делать то же самое:
IIdentity = function(value){this.value = value} // improved version
IIdentity.prototype.transform = function(transformer){return new IIdentity(transformer(this.value))}
new IIdentity(5).transform(function(x){return x + 6})
?