我正在尝试将SPECIALIZE pragma用于我通过hsc2hs #type
获得的类型。
我试过这样的事情:
{-# SPECIALIZE someFn :: #{type DWORD} -> #{type DWORD} -> Bool #-}
someFn :: Eq a => a -> a -> Bool
该尝试失败,parse error on input '#'
(在第一个#{type DWORD}
上)。
我已经找到了一个我发现有效的答案,但我真的希望有更清洁的东西 - 或者更确切地说:这些东西不会影响整个模块的代码。
答案 0 :(得分:4)
可以使用#type
声明委派type
:
type SDWORD = #{type DWORD}
{-# SPECIALIZE someFn :: SDWORD -> SDWORD -> Bool #-}
someFn :: Eq a => a -> a -> Bool