erlang 为什么OTP中的类型规格会重复参数名称?

gstyhher  于 2022-12-08  发布在  Erlang
关注(0)|答案(1)|浏览(121)

在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 来看,这两种类型是否等同?

jdgnovmf

jdgnovmf1#

之所以这样做,是因为如果这样做,从规范生成的文档看起来会更好。

相关问题