带有地图的无形状示例无法编译(scala)



我正在尝试映射无形的HList。 以下示例派生自此处:

import shapeless._
import poly._
object Main {
    def main(args: Array[String]) = {
        object choose extends (Set ~> Option) {
          def apply[T](s : Set[T]) = s.headOption
        }
        val sets = Set(1) :: Set("foo") :: HNil
        val opts = sets map choose   // map selects cases of choose for each HList element
    }
}

不幸的是,我无法编译该示例。 编译器说"值映射不是HCons[scala.collection.immutable.Set[Int],HCons[scala.collection.immutable.Set[String],HNil]]的成员"。 我怀疑缺少定义 HList 上的映射操作的隐式导入,但我不知道该导入应该是什么。 我正在使用 sbt 和以下 build.sbt 文件:

name := "scala-polymorphism-experiments"
version := "0.1.0"
scalaVersion := "2.10.3"
resolvers ++= Seq(
  "Sonatype OSS Releases"  at "http://oss.sonatype.org/content/repositories/releases/",
  "Sonatype OSS Snapshots" at "http://oss.sonatype.org/content/repositories/snapshots/"
)
libraryDependencies ++= Seq("org.scalatest" % "scalatest_2.10" % "2.0" % "test",
                            "com.chuusai" % "shapeless" % "2.0.0-SNAPSHOT" cross CrossVersion.full changing())

如果我使用 M1 版本的 2.0.0,我也会遇到这个问题。 我应该更改什么才能使此示例编译和运行?

问题从未确定。 解决方案是注释掉项目中所有其他 scala 文件中的所有代码,重新编译,然后取消注释并再次编译。 毫无疑问,一个

sbt clean

本来也会做的。

最新更新