Haskell GHC更喜欢一个专业而不是另一个专业

Haskell GHC更喜欢一个专业而不是另一个专业,haskell,ghc,Haskell,Ghc,我有一个Haskell typeclass函数,如下所示: class Foo m where foo :: Num a => m a -> a 我想生成两个foo的专门化,一个用于m~X Int的任何时间,另一个用于m~X Int,a~Int的时间。我为此编写了以下代码: instance Foo (X a) where {-# SPECIALIZE instance Foo (X Int) #-} foo = ... {-# SPECIALIZE foo

我有一个Haskell typeclass函数,如下所示:

class Foo m where
   foo :: Num a => m a -> a
我想生成两个
foo
的专门化,一个用于
m~X Int
的任何时间,另一个用于
m~X Int,a~Int
的时间。我为此编写了以下代码:

instance Foo (X a) where
   {-# SPECIALIZE instance Foo (X Int) #-}
   foo = ...
   {-# SPECIALIZE foo :: X Int Int -> Int #-}
据我所知,在包含此代码的文件中,我得到了这两种专门化。然而,在使用
Foo
的模块中,它似乎总是指向不太通用的专门化,即
Foo::Num a=>X Int a->a
,即使在
a~Int
时也是如此

有没有办法告诉GHC更喜欢最专业化的
foo
版本,而不是部分专业化的版本

谢谢。

可能与有关。如果您认为您的问题与此相关,那么您可能值得在这里发表评论。