Есть вот такая вот реализация этой монады
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})
?






