Erlang类型规范

Cha*_*ang 3 erlang

我最近阅读了couch-db的源代码,我发现这个类型定义我不明白:

-type branch() :: {Key::term(), Value::term(), Tree::term()}.
-type path() :: {Start::pos_integer(), branch()}.
-type tree() :: [branch()].
Run Code Online (Sandbox Code Playgroud)

我确实阅读过Erlang doc,但Start,Key,ValueTree的含义是什么?据我所知,它们是Erlang变量!我在Erlang doc中没有找到任何关于此的信息.

ndi*_*dim 7

Start等等只是术语各部分的描述性名称,以使人们更容易阅读类型定义.它们与实际变量名无关.

(附注:遗憾的是,即使是在OTP R14B,edoc仍然无法读取-type-spec生成它的HTML文件-它使用旧的@type@spec来代替.)

更新:关于-type-spec官方文档.要搜索的更多内容是成功输入这个词以及透析器typer的手册.