GHC偏好一个专业化而不是另一个专业化

时间:2017-07-18 22:33:05

标签: haskell ghc

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

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 -> aa ~ Int

有没有办法告诉GHC更喜欢最专业的{​​{1}}版本而不是部分专业版?

感谢。

0 个答案:

没有答案