在Haskell中,我相信有可能以编译器不允许在有别名的类型和无别名的类型之间引用的方式为类型设置别名。根据的说法,可以这样使用Haskell的newtype:newtype Cm = Cm Double
其中,Feet和Cm的行为类似于双精度值,但尝试将Feet值和Cm值相乘将导致编译器错误。编辑: Ben在评论中指出,Haskell的上述定义是不够的。Feet和Cm将是新类型,不会在其
作为背景,我最近编写了一个小应用程序来检测图像中的框数。该应用程序定义了一些类型,例如:这个应用程序是Kotlin,但原则应该适用于任何强类型语言。上面Box的定义是我通常看到代码编写的方式。效果很好。然而,只要对类型使用Int,我们可能会不经意地分配一个X坐标,其中Y坐标是预期的。我意识到我可以通过定义XCoordinate和YCoordinate类型来使用类型系统来避免这样的错误:
class Box(val x1: XCoordinate, val y1: YCo
我遵循了Haskell的维基页面上的建议:来提高我代码的性能,但是当我改变至(yellow:red:green:blue:empty:_) = [Color 1consists of one or more nullary, non-GADT constructors)
Try -XGeneralizedNewtyp