scala - Scala 中是否有可能 "curry"更高种类的类型?

标签 scala types currying higher-kinded-types kind-projector

假设我有一个具有两个类型参数的特征,例如

trait Qux[A, B]

以及另一个具有更高种类类型参数的特征,例如

trait Turkle[C[_]]

我希望能够用固定值替换 Qux 的类型参数之一,以便它可以用于参数化 Turkle

这是一个示例(在 Scala 中没有意义的代码!):

trait Baz[A] extends Turkle[Qux[A, _]]

有人知道如何实现这种效果吗?

最佳答案

Jason Zaugg 想出了最简洁的方法:

trait Baz[A] extends Turkle[({type x[a]=Qux[A, a]})#x]

IntelliJ 的 Scala 插件可以选择将其折叠为:

trait Baz[A] extends Turkle[x[a]=Qux[A, a]]

关于scala - Scala 中是否有可能 "curry"更高种类的类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6247817/

相关文章:

javascript - 像 JavaScript 一样在 Scala 中进行柯里化(Currying)

scala - 什么是错的 : "value Parsers is not a member of package scala.util.parsing.combinator"?

typescript - TypeScript 中的类型化枚举实例

function - 在 Scala 中定义函数的两种方法。有什么不同?

java - 在java中切换类型

types - 为什么由于缺少类型注释而收到错误 "trait bound FromStr is not satisfied"?

ios - Swift: 'Currying' 和返回函数的函数有什么区别?

scala - 通过插入 () 来调整参数列表已被弃用

scala - 循环遍历 Map Spark Scala

Scala Bitset 到BitMask 转换