haskell - 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)
解决方案
使用参数-ddump-spec
,GHC 将在特化多态函数后打印核心程序。Core 并不完全是 Haskell。取决于你在做什么,它可能更容易或更难使用。GHC 手册中记录了此选项和相关选项
如评论中所述,并非每个类型类约束函数在编译期间都是专用的。一些字典在运行时传递。
推荐阅读
- r - 在 ggplot x 轴上显示所有日期值 - R
- teamcity - 对 GitHub 拉取请求发表评论时触发 TeamCity 构建
- python - 如果 x = 2 y = 5 z = 0 则求下列表达式的值: a. x == 2 b。x != 5 摄氏度。x != 5 && y >= 5 d。z != 0 || x == 2 e。!(y < 10)
- c++ - 当 lambda 执行时,C++ lambda 捕获的引用具有不同的值
- c# - UWP 控制面板应用设置
- javascript - 遍历对象数组 - Javascript
- r - 查找字符串中值的平均值
- r - 修改指定的列表元素 r
- python - 使用 Python 消除视频中的冗余帧
- vb.net - 键入时自动滚动 DataGridView