给定一个签名为:A => F[G[B]]
的函数。有F
和G
类型的单子实例。
有可能将其转化为带有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来回答。
假设我们有一个String=>List[Option[Integer]]
。我们需要生产一个List[Option[String=>Integer]]
。我们应该如何处理这个问题?例如,结果列表应该有多长?它应该包含多少个None
?
显然,这些问题没有答案,这意味着请求的转换不可能存在于任意的单子(或实际上大多数单子,因为人们可以对大多数单子提出类似的问题)。