有必要在Monad中定义多个
例如,如果在
还是说一个monad应该只定义一个
flatMap
方法(或者在Haskell中使用>>=
/ bind
)吗?实际上我只用到了非常少的几个monads(Option
、Try
和Either
投影),它们只定义了一个flatMap
方法。例如,如果在
Option
上定义一个接受产生Try
的函数的flatMap
方法,这样Option[Try[User]]
就可以被展平为Option[User]
。这种情况下丢失异常不是问题的话,是否有意义呢?还是说一个monad应该只定义一个
flatMap
方法,接受产生相同类型monad的函数?我猜这种情况下Either
投影将不再是monads?它们是吗?
List[Option[_]]
的工作原理,因为 Option 不是 GenTraversableOnce。 - Sebastien Lorber