GADT (和常规数据类型)仅仅是数据族的缩写吗?对于类实例(我很惊讶地发现),我可以编写重叠的实例来使用GADT:instance {-# OVERLAPPING #-} C (GADT Int) .GADT很笨拙,我已经知道了。那么我认为data GADT a where ...就像data instance GADT a where ...一样。这是有道理的:有一个data instance GADT</e
我只是在学习关于ExistentialQuantification、GADTs和KindSignatures等的所有知识,为了做到这一点,我试着想出一些小程序来帮助我更好地理解所有的东西。{-# LANGUAGE KindSignatures #-}{-# LANGUAGE DataKinds #-}{-#
我在OCaml中玩GADT和幻影类型。我知道GADT是描述某些幻影类型的一种方便--如果我错了,请纠正我。因此,我决定尝试将使用GADT类型的程序转换为具有ADT和幻影类型的程序。我把的一个GADT程序作为起点。它是一个小的bool/int表达式计算器,下面是它的要点: type _ value =
| Bool : bool -> bool valueError: This expression has type bool but a