【问题标题】:Software engineering benefits of type systems used in functional languages函数式语言中使用的类型系统的软件工程优势
【发布时间】:2015-05-07 08:35:32
【问题描述】:

在像 HaskellOCaml 这样的高级静态类型函数式语言中,类型系统被规范地用​​于对在某些问题域中建模的实体类型实施约束。

从软件工程的角度来看,除了简单地执行约束之外,这种类型系统还有什么实际好处吗?例如,他们能否更轻松地对问题域进行推理?面对不断变化的需求,他们能否使设计抽象更加灵活/健壮?他们可以帮助管理大型系统的复杂性吗?等等……

如果确实存在这样的好处,我们是否可以尝试将它们复制到动态语言中,例如 RubyPythonClojure

【问题讨论】:

  • 如果在编译时知道变量的类型,编译器可以检查和优化代码 - 运行时错误更少,性能更好
  • 请不要投票结束这个问题,它并不像乍一看那样广泛。读者可能会想到任何单一的好处(无论多么小)并相应地给出他的答案。
  • 我相信您的大多数示例都属于“仅执行约束”类别 - 使用强大的类型系统,您可以(轻松地)表达比较小系统更广泛的约束。

标签: types functional-programming dynamic-languages


【解决方案1】:

“简单地执行约束”——这正是重点。您想通过类型来表达程序(和每个子程序)的规范。然后类型检查实际上是“强制正确性”(这并不简单)。 Haskell 并没有就此结束,还有一些语言的类型系统更具表现力(AgdaIdris),您实际上可以在其中实现完整表达规范的目标。

其他语言的复制 - 参见,例如,HackTypeScript

注意:在 Haskell 专家对我说“更具表现力”之前:Haskell 类型系统(针对依赖类型)有几个(特定于编译器的)扩展,使其也更具表现力。 - “完整”的意思是“像数学逻辑一样富有表现力”,它是 通用规范语言。我就不说了,如果你想要更多,你可以在有关编程语言理论和原则的论文和书籍中找到它。

【讨论】:

    猜你喜欢
    • 2013-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-22
    相关资源
    最近更新 更多