2014-01-06 60 views
14

看起來好像是Optional in Java 8 is a monadJava 8單元中的流?

流也是monads?

任何人都可以識別endofunctor和可選monad中的兩個自然轉換嗎?

+0

不知道Streams非常好,我想是的。然而,它有什麼關係?你不能在Java中抽象類型構造函數,也不能在返回類型上重載,因此你可能不能在monad構造函數中編寫多態的Java代碼。 – Ingo

回答

11

編輯下面的答案是不正確(保留在這裏的歷史)。

是的,在每種情況下,仿函數由類及其map方法的,和兩個自然變換是offlatMap(identity)

正確的答案似乎是here

+0

我們需要定義:\ displaystyle \ begin {array} {lcl} \ mathit {return}&::&a \ rightarrow \ mathit {Stream} \,a \\ \ mathit {join}&::&mathit {Stream} \,(\ mathit {Stream} \,a)\ rightarrow \ mathit {Stream} \,\ end {array} –

1

如果你知道Haskell:Java的Stream不是別的,那麼Haskell的list monad []和Java的Optional就不是Haskell的Maybe monad。