哪些Haskell(GHC)扩展应该用户使用/避免?
我已经有几次有GHC告诉我使用扩展的经验,只是发现,当使用扩展时,我已经使代码更加复杂,当一个简单的重构允许我坚持使用Haskell 98(现在2010 ),并有一个更直接的解决scheme。
另一方面,有些时候GADT或Rank2Types(很lessRankNTypes)使得代码less得多,代码更简洁。
哪种扩展通常会掩盖更好的devise的可能性,并且通常会改进它? 如果有两者兼而有之,那么在决定使用该扩展之前,用户应该寻找什么(确定他们打算的解决scheme是真是假)?
(另请参阅我应该使用GHC Haskell扩展吗? )
一个道德“良好”的延伸,道德上“坏”的特设清单 – 这是一个美学判断!
好
- GADTs
- 并行列表parsing
- 模式卫兵
- Monad理解
- 元组部分
- logging通配符
- 空数据删除
- 存在types
- 广义新型派生
- MPTC + FD
- types家庭
- 明确的量化
- 更高级别的多态性
- 词法分析tyvars
- 爆炸模式
坏的
- SQL理解
- 隐式参数
丑 (但必要)
- 模板Haskell
- 无箱子types和元组
- 不可判断的,重叠和不连贯的情况 – 通常意味着你有一个错误的devise。
不确定
- 箭头符号
- 查看模式