有时,我遇到了 Haskell 仅匹配实例头的“功能”,即,
instance (a ~ NewDataTyp b) => C a
现在将匹配任何类型,即C
在您的程序中编写另一个实例声明将是一个错误,即使它不可能由于上下文而发生冲突a ~ NewDataTyp b
。有时,需要付出很大的努力才能克服;我不得不重组数百行代码以避免这种限制。
是否有任何语言扩展或后代语言(Curry?Agda?)被设计为具有更高的表达性优先级?这可能会牺牲(a)类型类世界的开放性(b)多项式时间类型检查。
编辑——对于那些对这个问题感兴趣的人,这个页面可能也很有趣:http ://www.haskell.org/haskellwiki/Future_of_Haskell