【问题标题】:Scala's state of type inference regarding ScalazScala 关于 Scalaz 的类型推断状态
【发布时间】:2012-05-29 16:06:42
【问题描述】:

正如 Alexej 对 this question 的回答中所见,在 Seq[Validation[X, A]] 上运行序列时,您需要一个样板显式类型参数 sequence[({type L[Y] = Validation[X, Y]})#L, Y]

其他数据类型/函数也可能发生同样的需求。

通过改进类型推断来消除对此类显式类型的需求的相关问题是:

  • 理论上可以在Scala中做吗?

  • 如果是,这是否在 Scala 路线图中?什么时候可以期待解决方案?

  • 如果不在路线图上,那么解决方案是否容易/适中/难以实现?

  • 一个普通人可以做任何事情来推进这个案子吗?

欢迎任何关于该问题的指针。

Here is a slightly related issue,但不讨论未来前景)

【问题讨论】:

    标签: scala type-inference scalaz


    【解决方案1】:

    retronym 在这里说What are type lambdas in Scala and what are their benefits? 未来版本的 scala 可以改进这一点。所以我想有可能改进语法。但是,据我了解,由于子类型化,我们在 Scala 中面临一些不可能

    【讨论】:

    • 如果我理解正确,Retronym 提到未来的 Scala 可以改进类型 lambda 语法,而不是真正消除它的需要。
    • 你无法消除它。没有它,如何将二进制类型构造函数表示为一元类型构造函数?
    • 话虽如此,它可能不那么丑
    • @YoEight 我的意思是在实际情况下消除对它的需要(通过推断类型)。 lambda 类型结构当然可以保持一般。
    • 那很好,但我认为这不可能,因为您可以表示类型 L[Y] = Validation[X, Y] 或类型 L[X] = Validation[X, Y]。编译器如何在这些可能性之间进行选择?
    猜你喜欢
    • 2016-03-31
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 2012-11-29
    • 2020-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多