为什么在类约束中不允许使用额外的类型变量?

时间:2014-10-11 21:33:38

标签: haskell

考虑这个没用的小例子:

{-# LANGUAGE TypeFamilies #-}

f :: (b ~ [a], Show b) => a -> Int
f _ = 0

使用FlexibleContexts扩展程序,可以将f的上下文替换为等效但更具可读性的上下文:

f :: Show [a] => a -> Int

现在只考虑使用class而不是function来设置相同的设置:

{-# LANGUAGE TypeFamilies, FlexibleContexts #-}

class Show [a] => F a

如果我尝试用等效但不太可读的

替换F的上下文
class (b ~ [a], Show b) => F a

然后我从GHC获得Not in scope: type variable ‘b’

为什么不能在类上下文中使用额外的类型变量?
这种限制的原因是什么?

0 个答案:

没有答案
相关问题