Normalmente sono fermamente convinto dell'uso di namespace (nomi di moduli qualificati) nella maggior parte delle lingue in cui programma, poiché è molto utile sapere a colpo d'occhio dove è venuto un determinato identificatore a partire dal. In Haskell c'è anche il vantaggio di evitare conflitti di nome comuni con le funzioni di Preludio.Come faccio a gestire i simboli infissi che appaiono brutti con nomi qualificati
Tuttavia, mi sento come dover mettere uno spazio dei nomi su un simbolo infisso (o altre brevi e identificatori DSL-y) sembra davvero strano, quindi sono tentato di riesportare i valori, in questo modo:
import qualified Data.Sequence as Seq
(|>) = (Seq.|>)
(<|) = (Seq.<|)
Cosa mi sta insidiando ora è che
Rilevare manualmente i valori sembra una noiosa norma d'ordine.
manualmente riesportatrice valori va tutto il sistema modulare esistente e non sembra di lavorare con i costruttori di dati (e forse altre cose che non ho ancora incontrato)
import qualified Data.Sequence as Seq (:>) = (Seq.:>) --gives me a parse error: --"Not in scope: data constructor `:>'"
Come faccio conciliare i simboli infissi e il namespace? Dovrei semplicemente arrendermi e imparare tutto lo spazio dei nomi? Ci sono le migliori pratiche Haskell per quanto riguarda i nomi e i simboli?
Quando provo questo, ottengo il seguente errore durante la compilazione: "L'importazione di" qualsiasi cosa "è ridondante. Lo capisci anche tu? È possibile sbarazzarsi dell'avvertimento? – VF1