對於一個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