Scala 在标准元组上复制HList样式操作的不成形示例
我对Scala非常陌生,一直在研究shapeless包,为Scala的元组提供类似HList的操作 我正在运行scala 2.10.5,并且已经成功地安装了包(版本2.2.0-RC6)以及所有依赖项 当我尝试在REPL中运行以下示例(来自)时Scala 在标准元组上复制HList样式操作的不成形示例,scala,tuples,implicit,shapeless,hlist,Scala,Tuples,Implicit,Shapeless,Hlist,我对Scala非常陌生,一直在研究shapeless包,为Scala的元组提供类似HList的操作 我正在运行scala 2.10.5,并且已经成功地安装了包(版本2.2.0-RC6)以及所有依赖项 当我尝试在REPL中运行以下示例(来自)时 scala> import shapeless._; import syntax.std.tuple._ scala > (23, "foo", true).head 我收到以下错误消息: <console>:17
scala> import shapeless._; import syntax.std.tuple._
scala > (23, "foo", true).head
我收到以下错误消息:
<console>:17: error: could not find implicit value for parameter c: shapeless.ops.tuple.IsComposite[(Int, String, Boolean)]
(23, "foo", true).head
:17:错误:找不到参数c:shapeless.ops.tuple.IsComposite[(Int,String,Boolean)的隐式值
(23,“foo”,正确)。头部
我敢打赌这对我来说是一个愚蠢的错误,我已经在很多论坛上对此进行了挖掘
我错过了什么
提前感谢您的帮助。您可能错过了宏天堂依赖项。如果没有这个,我会得到与您看到的相同的错误,有了它,示例就可以编译了 您的build.sbt应该包括以下内容:
libraryDependencies ++= Seq(
"com.chuusai" %% "shapeless" % "2.2.0-RC6",
compilerPlugin("org.scalamacros" % "paradise" % "2.0.1" cross CrossVersion.full)
)
谢谢你的回复。我应该提到我实际上是在使用Maven在Eclipse(而不是sbt)中构建我的项目。我已经尝试过添加macro_paradise插件(既可以作为Xplugin参数,也可以直接将依赖项添加到POM文件)。两者都不起作用。你把它作为编译器插件添加了吗?是的。按照那篇文章中的说明操作。那篇文章提到了天堂插件的一个非常旧的版本(它甚至有过时的组和人工制品ID)。。。您是否已更新它们以使用shapeless文档中提到的ID和版本?