gpt4 book ai didi

scala - 如何使用 Shapeless 编写递归多态函数

转载 作者:行者123 更新时间:2023-12-02 14:51:17 24 4
gpt4 key购买 nike

我可以编写一个简单的递归多态函数:

object simpleRec extends Poly1 {
implicit def caseInt = at[Int](identity)
implicit def caseList[A, B](implicit ev: simpleRec.Case.Aux[A, B]) =
at[List[A]](_.headOption.map(simpleRec))
}

这似乎很大程度上满足了我的要求;但是,我似乎得到了一个无意义的结果类型:

scala> simpleRec(List.empty[List[Int]])
res3: Option[B] = None

scala> simpleRec(List(List(1)))
res4: Option[B] = Some(Some(1))

如何才能给我值 Option[Option[Int]] 而不是 Option[B]?我预计我在这里犯了一些愚蠢的错误,但无法弄清楚它是什么。

最佳答案

这可能是一个错误,以下代码按预期工作:

object simpleRec extends Poly1 {
implicit def caseInt = at[Int](identity)
implicit def caseList[A](implicit ev: simpleRec.Case[A]) =
at[List[A]](_.headOption.map(simpleRec))
}

使用shapeless_2.11-2.0.0

关于scala - 如何使用 Shapeless 编写递归多态函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21271746/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com