2015-03-04 8 views
7

È possibile parametrizzare il tipo Enumerable.t in elisir?tipo enumerabile parametrizzato in elisir typespecs

così Attualmente ho una funzione che prende un elenco di foo s:

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

e davvero non deve essere una lista! poiché l'unica funzione è chiamata dal modulo Enum Mi piacerebbe cambiare il typespec di prendere qualsiasi Enumerable, ma mantenere il requisito che l'Enumerable deve consistere interamente di foo s

Qualcosa di simile

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

è questo possibile?

risposta

4

Sfortunatamente non ora. Avremmo bisogno di insegnare ai dializzatori come gestire i protocolli se vogliamo davvero che siano espressivi e non ci sono piani per farlo.