Mik*_*ouk 0 recursion types scala
假设我有一个类型A。如何B在 scala 中定义类型,即Unittuple 或 tuple (A, B)?
我想建模一种B[A]可以是
(), (A, ()), (A, (A, ())), (A, (A, (A, ()))), (..., (A, (A, (A, ())))).
Run Code Online (Sandbox Code Playgroud)
我见过这样的事情
trait B[A] extends (A, B) {}
Run Code Online (Sandbox Code Playgroud)
或示例
但由于Unit缺少终止可能性,因此无法使用我发现的内容。
谢谢你。
下面怎么样(类似于如何List定义):
trait NestedTuple[+A]
case class Tup[A](a: A, tail: NestedTuple[A]) extends NestedTuple[A]
case object End extends NestedTuple[Nothing]
val t1: NestedTuple[Int] = End
t1: NestedTuple[Int] = End
val t2: NestedTuple[Int] = Tup(1, Tup(2, End))
t2: NestedTuple[Int] = Tup(1,Tup(2,End))
Run Code Online (Sandbox Code Playgroud)