如何在实例声明中使用类型同义词?

汤姆·埃利斯(Tom Ellis)

我想为类约束创建同义词,例如以下示例(非常简化)

{-# LANGUAGE ConstraintKinds #-}

type Foo = Functor

data MyFunctor a = MyFunctor

instance Foo MyFunctor where
  fmap _ _ = MyFunctor

但是我明白了fmap is not a (visible) method of class Foo

似乎我应该能够这样做,因为GHC文档说:“ ...在实例上下文和超类中允许这两种约束的标准约束,元组和类型同义词”。我正在使用GHC 7.6。

GS-向Monica致歉

GHC文档中的这些陈述未涵盖您的案件。使用的实例上下文Foo类似于:

 instance Foo a => Bar a

一个超类将是这样的:

 class Foo a => Bar a

也就是说,您正在定义其他一些类或实例,并且Foo/Functor是要求之一。在这里,您实际上是在尝试定义Functor自己,并且必须使用真实的类名。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章