长生不老药类型规范中的参数化可枚举类型

parameterized enumerable type in elixir typespecs

是否可以在 elixir 中参数化 Enumerable.t 类型?

所以目前我有一个函数接受 foos:

的列表
@spec the_awesome([foo]) :: any
def the awesome(foos) do
  Enum.reduce(foos, &(bar(&2, &1)))
end

而且真的不必是列表!因为唯一的函数调用来自 Enum 模块,所以我想更改类型规范以采用任何 Enumerable,但保留 Enumerable 必须完全由 foos

组成的要求

类似

@spec the_awesome(Enumerable.t(foo)) :: any

这可能吗?

很遗憾,现在还没有。如果我们真的希望透析器具有表现力并且没有这样做的计划,我们将需要教透析器如何处理协议。