小编use*_*643的帖子

类型相等约束和多态性

等式约束的确切语义是什么?这两种类型完全等效吗?

f :: Int -> IO [T]
g :: (a ~ T) => Int -> IO [a]
Run Code Online (Sandbox Code Playgroud)

g单态函数还是多态函数,碰巧只适用于 T?它看起来很单态,但编译器会像这样处理f吗?关于等式约束的 GHC 用户指南部分没有讨论实现细节。

我似乎记得多态函数可能需要 INLINEABLE 或 SPECIALIZE pragma 来启用所有优化,并且使事情不必要地多态可能会产生运行时成本。这是否也是这种情况,g或者 GHC 会更好地了解并立即简化吗?或者,这取决于?

polymorphism haskell

9
推荐指数
1
解决办法
130
查看次数

标签 统计

haskell ×1

polymorphism ×1