标签: coproduct

我的coproduct编码不明确

这个问题最近出现了几次,所以我在这里常见问题.假设我有一些像这样的案例类:

import io.circe._, io.circe.generic.semiauto._

object model {
  case class A(a: String)
  case class B(a: String, i: Int)
  case class C(i: Int, b: Boolean)

  implicit val encodeA: Encoder[A] = deriveEncoder
  implicit val encodeB: Encoder[B] = deriveEncoder
  implicit val encodeC: Encoder[C] = deriveEncoder
  implicit val decodeA: Decoder[A] = deriveDecoder
  implicit val decodeB: Decoder[B] = deriveDecoder
  implicit val decodeC: Decoder[C] = deriveDecoder
}
Run Code Online (Sandbox Code Playgroud)

我想使用circe和Shapeless副产品对一个值进行编码,这些值可以是JSON中的任何一个.

import io.circe.shapes._, io.circe.syntax._
import shapeless._

import model._

type ABC = A :+: B :+: C :+: CNil …
Run Code Online (Sandbox Code Playgroud)

union json scala circe coproduct

13
推荐指数
1
解决办法
514
查看次数

Shapeless 的“分配财产”

不确定正确的术语是否是“分配财产”,但我记得在学校学过这个,所以这里是我想做的一个例子:

鉴于:

type MyHList = (A :+: B :+: C :+: CNil) :: (Foo :+: Bar :+: CNil) :: HNil
Run Code Online (Sandbox Code Playgroud)

Shapeless 中是否有任何内置类型类可以解决这个问题:

type Out = (A, Foo) :+: (A, Bar) :+: (B, Foo) :+: (B, Bar) :+: (C, Foo) :+: (C, Bar) :+: CNil
Run Code Online (Sandbox Code Playgroud)

谢谢

scala cartesian-product hlist shapeless coproduct

2
推荐指数
1
解决办法
96
查看次数

标签 统计

coproduct ×2

scala ×2

cartesian-product ×1

circe ×1

hlist ×1

json ×1

shapeless ×1

union ×1