带有map的无形示例将无法编译(scala)

时间:2014-01-02 23:13:26

标签: scala shapeless

我正在尝试以无形状映射HList。以下示例源自here

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]]”。我怀疑有一个隐含的导入缺少定义HLists上的map操作,但我不知道导入应该是什么。我正在使用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())

如果我使用2.0.0的M1版本,我也有这个问题。我应该更改什么来使这个例子编译并运行?

1 个答案:

答案 0 :(得分:0)

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

sbt clean

也会做得很好。