給定一個功能與簽名:A => F[G[B]]
。有F
和G
類型的monads實例。變換 'A => F [G [B]]' 到 'F [G [A => B]' 階
是否有可能將其改造成能簽名: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]] = ???
更新:我會感謝使用貓或斯卡拉答案。
這被稱爲* higher-kinded types *。你可以使用'Scalaz'或'Cat'來處理它們。 – sebszyller
謝謝。這確實是我需要的。這個怎麼做? –
假設你有一個'String => List [Option [Integer]]'。你需要產生一個'List [Option [String => Integer]]'。你能做到嗎?結果列表將會多久?有多少'None's會包含? –