软件工程在函数式语言中使用的类型系统的好处

时间:2015-05-07 08:35:33

标签: types functional-programming dynamic-languages

在高级静态类型函数语言(如 Haskell OCaml )中,类型系统规范地用于对在某个问题域中建模的实体类型实施约束。

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

如果确实存在这样的好处,我们能否以某种方式尝试用动态语言复制它们,例如 Ruby Python Clojure ?< / p>

1 个答案:

答案 0 :(得分:2)

&#34;只需执行约束&#34; - 那就是重点。您希望按类型表示程序(和每个子程序)的规范。然后类型检查实际上是'#34;强制执行正确性&#34; (而且这并不简单)。 Haskell并不是最终结果,有些语言具有更具表现力的类型系统(AgdaIdris),您可以在其中实现完全表达规范的目标。

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

注意:在Haskell专家向我跳过关于&#34;表达更多&#34;:Haskell类型系统的几个(编译器特定的)扩展(对于依赖类型)也使它更具表现力。 - &#34;完成&#34;表示&#34;表达为数学逻辑&#34;,它是 通用规范语言。如果你想要更多的话,我会把它留在那里,你会在关于编程语言的理论和原理的论文和书籍中找到它。