小编mpi*_*ist的帖子

对HList进行排序

给定一个无形HList,其中每个列表元素共享相同的类型构造函数,如何对HList进行排序?

例如:

def some[A](a: A): Option[A] = Some(a)
def none[A]: Option[A] = None

val x = some(1) :: some("test") :: some(true) :: HNil
val y = sequence(x) // should be some(1 :: "test" :: true :: HNil)

def sequence[L <: HList : *->*[Option]#?, M <: HList](l: L): Option[M] =
  ???
Run Code Online (Sandbox Code Playgroud)

我试图实现这样的序列:

object optionFolder extends Poly2 {
  implicit def caseOptionValueHList[A, B <: HList] = at[Option[A], Option[B]] { (a, b) =>
    for { aa <- a; bb <- b } yield aa …
Run Code Online (Sandbox Code Playgroud)

scala shapeless

18
推荐指数
1
解决办法
1559
查看次数

如何使用sbtosgi生成osgi bundle作为sbt发布任务的一部分

我正在使用sbtosgi插件使用bnd从sbt构建生成OSGi包.sbtosgi包提供了用于生成包的osgi-bundle任务.使用sbtosgi的默认配置,从sbt提示符运行osgi-bundle会更新JAR以包含正确的标头,但运行clean package会导致JAR没有OSGi标头.在Maven中,我正在尝试使用包装= bundle来使用maven-bundle-plugin - 即项目的主要工件应该是OSGi包.

在阅读sbtosgi插件的源代码的基础上,我认为osgi-bundle任务会覆盖packageBin创建的JAR.我尝试覆盖packageBin的定义,以便它使用osgi-bundle任务而不是默认任务:

  packageBin in Compile <<= OsgiKeys.bundle
Run Code Online (Sandbox Code Playgroud)

这导致了循环引用:

[error] Cyclic reference involving 
[error]    {file:project/*:osgi-bundle
[error]    {file:project/compile:full-classpath
[error]    {file:project/compile:exported-products
[error]    {file:project/compile:package-bin
Run Code Online (Sandbox Code Playgroud)

我对SBT很新,我不知道从哪里开始.任何帮助,将不胜感激.

osgi scala sbt

6
推荐指数
1
解决办法
772
查看次数

无形:在HList上反转filterNot

我正在尝试为scodec库编写一个组合器,它将Codec[K]in转换为Codec[L]where K是a HList并且与删除的所有元素L等效.HListUnit

实现解码可以通过解码a K然后过滤掉所有Unit元素来完成.过滤掉Unit元素直接由无形使用支持filterNot,这使得实现这一点变得微不足道.

实现编码是通过将La 转换为a K,()在适当的索引处插入,然后委托给原始代码来完成的Codec[K].我在实现L => K转换时遇到了麻烦.

def dropUnits[K <: HList, L <: HList](codec: Codec[K])(
  implicit fltr: FilterNot.Aux[K, Unit, L]): Codec[L] = new Codec[L] {
    override def decode(buffer: BitVector) = 
        codec.decode(buffer).map { case (rest, l) => (rest, l.filterNot[Unit]) }
    override def encode(xs: L) = {
      ???
    }
  }
Run Code Online (Sandbox Code Playgroud)

没有运气,我尝试了几种不同的解决方案.这可能是无形的吗?

scala shapeless scodec

6
推荐指数
1
解决办法
252
查看次数

标签 统计

scala ×3

shapeless ×2

osgi ×1

sbt ×1

scodec ×1