首页 > 解决方案 > haskell 源代码中的内联函数

问题描述

有没有办法从现有的 haskell 源文件中生成带有内联定义的 haskell 源文件?具体来说,我有兴趣采取以下措施:

class C a where
    foo :: a -> a

instance  C Bool where
    foo = not

bar :: Bool -> Bool
bar x = foo (foo x)

并删除对类型类的引用以生成:

bar :: Bool -> Bool
bar x = not (not x)

标签: haskell

解决方案


使用参数-ddump-spec,GHC 将在特化多态函数后打印核心程序。Core 并不完全是 Haskell。取决于你在做什么,它可能更容易或更难使用。GHC 手册中记录了此选项和相关选项

如评论中所述,并非每个类型类约束函数在编译期间都是专用的。一些字典在运行时传递。


推荐阅读