我了解到type同义词是现有类型的新名称.它可以像
type MyChar = Char
Run Code Online (Sandbox Code Playgroud)
但这种用法是什么意思呢?
class HasField a where
type FieldType a :: *
Run Code Online (Sandbox Code Playgroud)
Ørj*_*sen 11
这是一个相关的类型系列,如果你使用pragma,GHC提供的扩展
{-# LANGUAGE TypeFamilies #-}
Run Code Online (Sandbox Code Playgroud)
或将参数传递-XTypeFamilies给GHC或GHCi.
基本上,它声明了一个类,使得类的每个实例都可以单独定义类型同义词的含义.例如:
data MyDataType = MyDataConstructor Int
instance HasField MyDataType where
type FieldType MyDataType = Int
Run Code Online (Sandbox Code Playgroud)