Erlang 中的类型检查

art*_*ist 3 erlang types

我的理解是,-spec在 Erlang 中仅用于透析器。

如何在编译时检查类型(例如在函数中)(这是如何实现的,例如在 Haskell 中)?

zxq*_*xq9 5

简短的回答:你不能。

Erlang 是一种动态类型语言,运行时所依赖的许多假设都要求它如此,至少在某些地方如此。过去曾讨论过创建语言的强类型子集或纯功能子集,但这两种方法都没有证明自己值得付出超出透析器已经提供的努力。

也就是说,如果您构建代码来利用它, dialyzer 是一个非常有用的工具。