我一直在网上寻找Erlang程序的各种打字实践,似乎有一些...虽然有点难以找到一个坚实的信息来源,即我正在寻找实用信息:
1. -specs
- 这个看起来很有吸引力.一些地方提到在编译时检查具有相关的-specs指令的函数(为了正确的类型用法)...我似乎无法找到更多关于如何使用它的信息(使用哪种工具 - Dialyzer, TYPER?).我真的很想创建一个小的解析器/代码生成器,它将从表单的函数声明中生成这些"规范"
functionName(param1 :List, param2 :Tuple) -> ...
我还没有看到是否-spec
支持抽象类型(用户声明的类型 - "汽车"类型 -
{car,{weight,_},{height,_},{maxSpeed,_}}
2. 这里提到的-deftype
指令
如果我可以开始输入内容并在编译时检查它们,那么Erlang对我来说会变得如此强大.上面提到的解析器/代码生成器的运行时将在输出源代码中生成防护类型检查.
有关类型和规范属性的更多信息:
http://www.erlang.org/eeps/eep-0008.html
透析器可以用来检查它们(见dialyzer --help
).
Typer可用于生成它们(请参阅参考资料typer --help
).