haskell 中的关联数据类型是什么?

zer*_*ing 5 haskell types type-families

在路由部分,文章说:

我们可以看到 RenderRoute 类定义了一个关联的数据类型 ,为我们的应用程序提供路由。

什么是关联的数据类型是什么意思?这意味着类型家庭?

Kar*_*ski 6

引用文章中的代码:

instance RenderRoute HelloWorld where
    data Route HelloWorld = HomeR
        deriving (Show, Eq, Read)
    renderRoute HomeR = ([], [])
Run Code Online (Sandbox Code Playgroud)

如您所见,Route是关联的数据类型,是的,它意味着数据系列。看看维基例子:

我们定义了一个类型类,它的实例是我们可以在泛型映射中用作键的类型:

class GMapKey k where  
    data GMap k :: * -> *  
    empty       :: GMap k v  
    lookup      :: k -> GMap k v -> Maybe v  
    insert      :: k -> v -> GMap k v -> GMap k v
Run Code Online (Sandbox Code Playgroud)

有趣的部分是类的关联数据族声明。它为* -> *关联的数据类型提供了一种类型签名(此处为)GMap k- 类似于方法如何在类声明中接收类型签名。

  • “类型系列”和“数据系列”之间有什么区别? (2认同)