关于类型推断和多态性的注释

主要观点:子类型与 Hindley-Milner 类型推断结合困难,Hindley-Milner 有两个关键属性但添加如类型类等会使情况变复杂,存在重叠实例和模糊实例问题及相应解决办法,还提到其他相关注意事项如避免类型推断、双向类型检查等。
关键信息:

  • Hindley-Milner 可找到表达式的主类型且类型注解可选。
  • 某些类型的子类型与 Hindley-Milner 配合良好,如参数多态。
  • 类型类是“开放”的,用户定义类型可成为包中定义的类型类实例。
  • 重叠实例会导致歧义,可通过添加类型注解解决但会影响类型推断。
  • 模糊实例可通过去除“类型类”只允许函数重载或支持联合类型来解决。
  • 结合类型推断和类型类的算法不优雅且可能计算量大。
  • 有观点反对类型推断,还有双向类型检查技术。
    重要细节:
  • 给出MonadFunctor类型类的定义及Maybe类型作为Monad实例的实现。
  • 说明重叠实例和模糊实例的具体情况及相应解决办法的示例。
  • 提及相关研究论文如[MLSub]等。
阅读 13
0 条评论