Haskell GHC更喜欢一个专业而不是另一个专业
我有一个Haskell typeclass函数,如下所示: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
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
版本,而不是部分专业化的版本
谢谢。可能与有关。如果您认为您的问题与此相关,那么您可能值得在这里发表评论。