【发布时间】:2016-09-15 08:47:29
【问题描述】:
给定一个带有签名的函数: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 的答案。
【问题讨论】:
-
这被称为higher-kinded types。您可以使用
Scalaz或Cats与他们合作。 -
谢谢。这确实是我需要的。如何做到这一点?
-
假设你有一个
String=>List[Option[Integer]]。您需要生成一个List[Option[String=>Integer]]。你能做到吗?结果列表会有多长?它会包含多少个Nones? -
谢谢,这应该是答案:)
-
标签: scala functional-programming scalaz scala-cats