在以下示例中
import shapeless._ import shapeless.Syntax.singleton._ val concat = "right".narrow def extract[s <: String](x: s)(implicit witness: Witness.Aux[s]): String = witness.value extract(concat)
我收到了一个错误
Error: could not find implicit value for parameter
witness:shapeless.Witness.Aux[String("right")]
我正在尝试做的事情是类型级DSL,它严重依赖单例类型.
由于在typelevel的fork之外支持单例类型的文字,我希望除了类型文字之外还要开发基于值的DSL,并且在值类型中保留可用的单例类型对于此任务至关重要.
所以我正在寻找允许我稍后从值的类型中提取单例字符串见证的任何解决方法.
编辑
使用.witness而不是.narrow的操作完美地工作,但我仍然在寻找没有Witness包装的纯类型的解决方案