【发布时间】:2015-05-07 08:35:32
【问题描述】:
在像 Haskell 或 OCaml 这样的高级静态类型函数式语言中,类型系统被规范地用于对在某些问题域中建模的实体类型实施约束。
从软件工程的角度来看,除了简单地执行约束之外,这种类型系统还有什么实际好处吗?例如,他们能否更轻松地对问题域进行推理?面对不断变化的需求,他们能否使设计抽象更加灵活/健壮?他们可以帮助管理大型系统的复杂性吗?等等……
如果确实存在这样的好处,我们是否可以尝试将它们复制到动态语言中,例如 Ruby、Python 或 Clojure?
【问题讨论】:
-
如果在编译时知道变量的类型,编译器可以检查和优化代码 - 运行时错误更少,性能更好
-
请不要投票结束这个问题,它并不像乍一看那样广泛。读者可能会想到任何单一的好处(无论多么小)并相应地给出他的答案。
-
我相信您的大多数示例都属于“仅执行约束”类别 - 使用强大的类型系统,您可以(轻松地)表达比较小系统更广泛的约束。
标签: types functional-programming dynamic-languages