在Scala中,我可以描述这样的ADT:
sealed trait Foo
case class A(a: Int) extends Foo
case class B(b: String) extends Foo
case class C(a: A, b: B) extends Foo
Run Code Online (Sandbox Code Playgroud)
如何在Haskell中做同样的事情?
data Foo = A Int | B String | C A B
Run Code Online (Sandbox Code Playgroud)
这是行不通的,因为A和B不是类型。我应该使用GHC扩展名吗?