在GHC插件中应用多态函数

时间:2014-04-16 20:32:45

标签: haskell ghc

我想写一个GHC插件,为每个函数“添加一个钩子”。假设我想将addHook类型的函数Ord a => (a -> b) -> a -> b应用到每个函数绑定的右侧,转换

foo = [RHS]

foo = addHook [RHS]

如果我只想将钩子添加到Int -> Int类型的函数中,这样可以正常工作,在这种情况下,我使addHook也具有类型(Int -> Int) -> Int -> Int,并调用{{1并将其绑定到我的GHC插件中的mkCoreApp [AddHook] [RHS]

但是,如果我希望foo如上所述是多态的,那么addHook函数的转换后的GHC核心应该看起来像

Int -> Int

请注意,应该附加一些类型信息,但我找不到在插件中构建这些信息的方法,而GHC没有这些信息就会发生恐慌。任何建议都将不胜感激。

0 个答案:

没有答案