3

我正在尝试将 SPECIALIZE pragma 用于我通过 hsc2hs 获得的类型#type

我试过这样的事情:

{-# SPECIALIZE someFn :: #{type DWORD} -> #{type DWORD} -> Bool #-}
someFn :: Eq a => a -> a -> Bool

该尝试以parse error on input '#'(在第一个#{type DWORD})失败。

我已经提出了一个我发现可行的答案,但我真的希望有一些更干净的东西——或者更准确地说:不会影响整个模块代码的东西。

4

1 回答 1

4

可以委托#typeusingtype声明:

type SDWORD = #{type DWORD}
{-# SPECIALIZE someFn :: SDWORD -> SDWORD -> Bool #-}
someFn :: Eq a => a -> a -> Bool
于 2015-09-22T22:54:33.387 回答