【问题标题】:Scalaz optionT transfomer seems to fail with type aliasScalaz optionT 变压器似乎因类型别名而失败
【发布时间】:2012-09-04 19:28:36
【问题描述】:

似乎使用类型别名会混淆 Scala 类型推断器或编译器。确实在尝试编译

import scalaz.OptionT.optionT
type Foo[A] = Option[Option[A]]
val x: Foo[Int] = Some(Some(3))
optionT(x)

导致奇怪的错误

java.lang.IllegalArgumentException: transpose requires all collections have the same size

由于我对 Scala 的经验有限,我不确定是否应该为此提交错误,或者如果这是预期的行为。

这真的是一个错误还是预期的行为?

【问题讨论】:

    标签: scala compiler-errors scalaz


    【解决方案1】:

    我自己刚刚测试过 IllegalArgumentException 是编译器正在退出,这将是一个错误。

    【讨论】:

      【解决方案2】:

      我也对此进行了测试,它看起来确实是一个错误,您应该向 scala 团队报告。但是,您可以通过给编译器一个提示来解决这个问题:

      val x: Foo[Int] = Some(Some(4))
      val y = optionT[Option](x)
      y: scalaz.OptionT[Option,Int] = OptionT(Some(Some(3)))
      

      【讨论】:

        猜你喜欢
        • 2019-11-18
        • 1970-01-01
        • 2015-07-10
        • 1970-01-01
        • 1970-01-01
        • 2021-12-08
        • 1970-01-01
        • 1970-01-01
        • 2017-02-13
        相关资源
        最近更新 更多