Zwei Module, die beide den gleichen Namen exportieren

Es gibt zwei Pakete, die ich verwenden möchte: CorpusLoaders.jl, und WordNet.jl

CorpusLoaders.SemCor exportiertsensekey(::SenseTaggedWord)WordNet exportiertsensekey(::DB, ::Synset, ::Lemma)

Ich möchte beide verwendensensekey Methoden.

Z.

für eine gemischte Liste von Elementen:mixedlist::Vector{Union{Tuple{SenseTaggedWord},Tuple{DB, Synset,Lemma}}. Dh die Elemente in der Liste sind eine Mischung aus 1-Tupeln vonSenseTaggedWord, and3 Tupel vonDB, Synset, undLemma.

for item in mixedlist
    println(sensekey(item...)
end

sollte arbeiten. Dieses Beispiel ist ein wenig scherzhaft, denn warum würde ich sie so mischen. Aber hoffentlich dient es zur Veranschaulichung des Problems im allgemeinen Fall.

Versuchenusing CorpusLoaders.SemCor, WordNet um beide Ergebnisse in @ zu bringWARNING: both WordNet and Semcor export "sensekey"; uses of it in module Main must be qualified.

Manuelles Importieren von beiden:import CorpusLoaders.SemCor.sensekey; import WordNet.sensekey ergibtWARNING: ignoring conflicting import of Semcor.sensekey into Main

Was kann getan werden? Ich möchte sie beide, und sie sind nicht wirklich widersprüchlich, da sie mehrfach versendet werden.

Da CorpusLoaders.jl ein Paket ist, das ich schreibe, habe ich noch einige Optionen, da ich meine CorpusLoaders.jl von WordNet.jl abhängig machen könnte. Wenn ich das tun würde, könnte ich in CorpusLoaders.jl @ sag

 import WordNet
 function WordNet.sensekey(s::SenseTaggedWord)...

und das würde sie beide arbeiten lassen. Dies würde jedoch bedeuten, dass WordNet als Abhängigkeit von CorpusLoaders erforderlich ist.

Und ich möchte wissen, wie ich das Problem für einen Konsumenten der Pakete lösen kann - und nicht für den Ersteller der Pakete.

Antworten auf die Frage(6)

Ihre Antwort auf die Frage