在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().
这是有原因的吗?从透析器的Angular 来看,这两种类型是否等同?
1条答案
按热度按时间jdgnovmf1#
之所以这样做,是因为如果这样做,从规范生成的文档看起来会更好。