【发布时间】:2023-03-23 07:55:01
【问题描述】:
假设我有一个 trait Show[T],比如 Scalaz 中的那个:https://github.com/scalaz/scalaz/blob/scalaz-seven/core/src/main/scala/scalaz/Show.scala#L9
我还有一个 Shapeless HList,可能看起来像 "1" :: 2 :: 3L :: HNil。
有没有办法找到每个元素的 Show 实例并应用 shows 以便我最终得到 "1" :: "2" :: "3L" :: HNil?
如果任何元素的类型在范围内没有隐式 Show 实例,我会想要一个编译错误。
我认为,如果我构建了 Show 实例中的 HList,我应该能够使用 zipApply 来获得我想要的 HList,但我不知道是否有办法让 Scala 推断 Show 实例中的 HList,而不是我手动构建它。
【问题讨论】: