变换' A => F [G [B]]'进入' F [G [A => B]'斯卡拉

时间:2016-09-15 08:47:29

标签: scala functional-programming scalaz scala-cats

给定带签名的函数:A => F[G[B]]。有FG类型的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的答案。

1 个答案:

答案 0 :(得分:6)

假设我们有String=>List[Option[Integer]]。我们需要生成List[Option[String=>Integer]]。我们该如何处理?例如,结果列表应该是多长时间?它应包含多少None个?

显然这些问题没有答案,这意味着任意monad(或者大多数monad,因为人们可以询问关于大多数monad的类似问题)不能存在所请求的转换。