给定带签名的函数:A => F[G[B]]
。有F
和G
类型的monads实例。
是否可以将其转换为具有签名的内容:F[G[A=>B]
?这种转变有没有通用名称?
换句话说,prettify2
的实现是什么?
def pretiffy(x: String): Future[Option[String]] = Future{if(x == "") None else Some(s">>>$x<<<")}
val pretiffy2: Future[Option[String => String]] = ???
更新:我很欣赏使用猫或scalaz的答案。
答案 0 :(得分:6)
假设我们有String=>List[Option[Integer]]
。我们需要生成List[Option[String=>Integer]]
。我们该如何处理?例如,结果列表应该是多长时间?它应包含多少None
个?
显然这些问题没有答案,这意味着任意monad(或者大多数monad,因为人们可以询问关于大多数monad的类似问题)不能存在所请求的转换。