【发布时间】:2020-06-01 01:38:57
【问题描述】:
在 Erlang 标准库的类型规范中,在 when 子句之前,规范中几乎没有任何类型。例如,lists:member/2 的规范是这样的:
-spec member(Elem, List) -> boolean() when
Elem :: T,
List :: [T],
T :: term().
代替:
-spec member(Elem :: T, List :: [T]) -> boolean() when
T :: term().
这是有原因的吗?从透析器的角度来看,这两种样式是否等效?
【问题讨论】: