对于一个Maybe.Just monad,如果我们用一个返回null的函数来映射它,它仍然会返回Just,但是我认为它应该是Nothing,否则它就失去了防止null的能力。我是对的吗,还是有另外一个原因是这样的?Maybe.map应该尊重映射的值吗?
Maybe.fromNuallable({noname: ''}) // return Just({noname: ''})
.map(prop('name')) // return Just(undefined), but I think it should return Nothing()
.map(x=>x.length) // failed here
我检查Maybe.map的所有实现(falktale和ramda.fantasy),它是下面:
Just.prototype.map = function(f) {
return this.of(f(this.value));
};
我重写我的答案更好地说明主题 - 主要是为我自己。也许它对其他人也有帮助。 – ftor
非常有帮助,谢谢,尤其是。最后一个转折触及了这一点:每个可能返回null/undefined的函数都应该返回一个Option类型,以便这种行为变得明确 – Ron