Ada*_*ner 9 polymorphism haskell ghc
编译ghc --make,这两个程序产生完全相同的二进制文件:
-- id1a.hs
main = print (id' 'a')
id' :: a -> a
id' x = x
-- id1b.hs
main = print (id' 'a')
id' :: Char -> Char
id' x = x
Run Code Online (Sandbox Code Playgroud)
这只是因为我的例子是多么微不足道/做作,或者当程序变得更复杂时这是否成立?
另外,有没有什么好的理由避免让我的类型尽可能通用?我通常会尝试在不需要它的地方保留详细信息,但我并不十分熟悉这对编译语言的影响,尤其是Haskell/GHC.
边注:
我似乎回想起最近的一个问题,答案是为了改善某些性能问题而使类型更具体,尽管我现在找不到它,所以我可能已经想到了它.
编辑:
我从可用性/可组合性的角度理解,更一般的总是更好,我对它对编译代码的影响更感兴趣.我是否有可能过于急切地抽象我的代码?或者这通常不是Haskell的问题?
我会去做尽可能一般的一切.如果你遇到性能问题,你可以开始考虑搞乱具体的实现,但恕我直言这不会经常出现问题,如果真的遇到问题,那么你的性能需求可能会考虑进入势在必行的领域再次;)
| 归档时间: |
|
| 查看次数: |
165 次 |
| 最近记录: |