是否可以参数化elixir中的Enumerable.t
类型?
所以目前我有一个带有foo
s列表的函数:
@spec the_awesome([foo]) :: any
def the awesome(foos) do
Enum.reduce(foos, &(bar(&2, &1)))
end
实际上它不一定是一个清单!由于唯一的函数调用来自Enum
模块,我想更改typespec以获取任何Enumerable,但保持Enumerable必须完全由foo
s
像
这样的东西@spec the_awesome(Enumerable.t(foo)) :: any
这可能吗?
答案 0 :(得分:4)
不幸的是现在不行。如果我们真的希望它们具有表现力并且没有计划这样做,我们需要教透析器如何处理协议。