这意味着使用'type'是什么意思

hl1*_*020 9 haskell

我了解到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)

或将参数传递-XTypeFamiliesGHCGHCi.

基本上,它声明了一个类,使得类的每个实例都可以单独定义类型同义词的含义.例如:

data MyDataType = MyDataConstructor Int

instance HasField MyDataType where
    type FieldType MyDataType = Int
Run Code Online (Sandbox Code Playgroud)