2015-10-02 12 views
7

Recentemente ho scritto un sacco di script in Haskell. È un'esperienza abbastanza piacevole in quanto è una delle lingue più concise che abbia mai toccato.Come posso importare implicitamente i moduli più usati?

Una cosa che mi preoccupa molto, però, è che devo digitare le stesse import s per ogni script che scrivo, e c'è una serie di moduli che io uso quasi ogni volta, come

import Control.Monad as MO 
import Data.ByteString.Lazy as BS 
import Data.Char as CH 
import Data.Csv as C 
import Data.Csv.Streaming as CS 
import Data.Foldable as FOLD 
import Data.Functor as F 
import Data.List as L 
import Data.List.Split as LS 
import Data.Text.Lazy as T 
import Data.Text.Lazy.IO as TI 
import Data.Vector as V 
import Debug.Trace as TR 
import Prelude as P 

I significo che potrei copiarli e incollarli ogni volta, ma c'è un modo per rendere implicite queste noiose importazioni? Proprio come l'importazione di Prelude è implicita?

+0

Un'opzione consiste nell'impostare una sorta di IDE come la funzione di importazione automatica, oltre a un "modello di magazzino", e quindi semplicemente comprimere la sezione delle importazioni in modo invisibile. –

risposta

13

Un'opzione per alcuni scopi è scrivere uno o più moduli "kitchen sink" per uso personale e importarli sempre. Sfortunatamente, questo non sembra fare molto bene quando si tratta di denominato o importazioni qualificate. Un'altra opzione è quella di utilizzare {-# LANGUAGE CPP #-} a #include alcuni pezzi di intestazione di magazzino.

Tuttavia, non consiglierei particolarmente nessuna di queste opzioni. Basta tenere un "modello di magazzino" in giro con le estensioni GHC e le importazioni dei moduli preferiti e insegnare al tuo editor di testo a usarlo. Non dimenticare di potare via le cose che non ti servono realmente.

+0

Anche se di solito non mi piacciono i modelli (quelli che si copiano, non il tipo di Haskell Template), sono d'accordo sul fatto che un modello è probabilmente il modo più ragionevole per iniziare con una lista di importazione. Il pericolo è, naturalmente, che puoi finire con moduli che importano molte cose che non sono realmente necessarie. – leftaroundabout

+1

@leftaroundabout Esiste l'opzione '-fwarn -used-imports'. –

+0

@leftaroundabout, è meglio del modulo sink da cucina, che sopprimerà in modo permanente l'avviso! – dfeuer

Problemi correlati