|
|
1
6
这些类型是广义代数数据类型。也称为 GADTs . gadt可以改进构造函数和类型之间的关系。 在您的示例中,gadts被用作引入存在量化类型的方法:删除不相关的构造函数,可以编写
在这里,
答案是
但在这里,这些小信息仍然足以操纵这些有意义的价值。我可以定义一个函数步骤
尝试应用函数
例如
|
|
|
2
4
我认为评论和@octachron的回答提供了足够的细节,但我想展示我最喜欢的两个小工具功能的例子。 首先,您可以编写函数,它将返回(类型)不同的类型!
显然,用简单的代数类型无法实现这一点。 第二点是,有了gadts编译器,您就有了足够的关于传递给函数的值的信息,因此您可以在模式匹配中“丢弃”一些毫无意义的分支:
因为
对于简单的代数类型,此示例将如下所示:
你不仅有一根无用的树枝,而且如果你不小心路过
|