Dois módulos, ambos exportando o mesmo nome
Existem dois pacotes que eu quero usar:CorpusLoaders.jleWordNet.jl
Exportações CorpusLoaders.SemCorsensekey(::SenseTaggedWord)
Exportações do WordNetsensekey(::DB, ::Synset, ::Lemma)
Eu quero usar os doissensekey
métodos.
Por exemplo
para alguma lista mista de itens:mixedlist::Vector{Union{Tuple{SenseTaggedWord},Tuple{DB, Synset,Lemma}}
. Ou seja, os itens da lista são uma mistura de 1-tuplas deSenseTaggedWord
e 3 tuplas deDB
, Synset
eLemma
.
for item in mixedlist
println(sensekey(item...)
end
Deveria trabalhar. Este exemplo é um pouco ridículo, porque eu os misturaria assim. Mas, espero que sirva para ilustrar o problema no caso geral.
Tentandousing CorpusLoaders.SemCor, WordNet
para trazer os dois resultados emWARNING: both WordNet and Semcor export "sensekey"; uses of it in module Main must be qualified.
Importando manualmente os dois:import CorpusLoaders.SemCor.sensekey; import WordNet.sensekey
resulta emWARNING: ignoring conflicting import of Semcor.sensekey into Main
O que pode ser feito? Eu quero os dois, e eles realmente não entram em conflito, devido ao envio múltiplo.
Como CorpusLoaders.jl é um pacote que estou escrevendo, tenho mais algumas opções, pois eu poderia fazer meu CorpusLoaders.jl depender do WordNet.jl. Se fizesse isso, poderia dizer em CorpusLoaders.jl
import WordNet
function WordNet.sensekey(s::SenseTaggedWord)...
e isso faria os dois funcionarem. Mas isso significaria exigir o WordNet como uma dependência dos CorpusLoaders.
E eu quero saber como resolver o problema para um consumidor dos pacotes - não como o criador dos pacotes.