当开始一个新的 Haskell 项目时,它需要新旧扩展提供的语言特性,我应该使用哪个?新的还是旧的?例如:
- GADT取代ExistentialQuantification。
- 在许多情况下,TypeFamilies取代了FunctionalDependencies。
- 等(如果您有更多示例,请随时在此处添加)
我倾向于较新的,因为它们感觉更干净,并且以统一的方式为语言添加了更多功能。但是,较旧的编译器得到更多编译器的支持,它们在现有库中使用,并且可能在程序员中也更为人所知。
更新:如答案/评论中所述,上述“取代”关系并不完全准确。但是,我对(经常发生的)一个任务可以通过几个扩展同样好地完成的情况感兴趣。