2012-09-16 8 views
5

Vorrei iniziare a utilizzare Haddock; la ragione principale non è che io (o chiunque altro) abbia bisogno di una buona documentazione HTML per quello che sto scrivendo in questo momento, ma che mi insegnerà un modo standardizzato di commentare i moduli Haskell. Per questo motivo, mi piacerebbe sporcarmi le mani, ma mi sono imbattuto in un problema piuttosto semplice.Eseguire l'eglefino da solo

Fonte:

module Main where 
-- |This is the main function. 
main = putStrLn "Hello World!" 

Haddock invocazione:

> haddock -h test.hs 
Haddock coverage: 
    50% ( 1/2) in 'Main' 
Warning: Main: could not find link destinations for: 
    GHC.Types.IO 

Sembra Haddock non sa dove cercare le librerie standard, ma questo è solo un ipotesi. I documenti dicono qualcosa su un parametro "-B", ma in realtà non ne spiegano molto.

Ho cercato il problema online, ed è stato fondamentalmente risposto con "usa un pacchetto Cabal e farà tutto per te". Tuttavia, preferirei non trattare con Cabal in questo momento, ma imparare Haddock da solo (Cabal può aspettare). C'è una soluzione semplice e facile (ish) al problema?

+2

Solo per mettere un punto dati là fuori: ho scritto un sacco di documentazione e mai una volta invocato 'eglefino 'a mano. –

+1

Corretto, l'eglefino non sa dove trovare i documenti per le librerie installate da solo, devi dirlo. Non sono un esperto, ma l'opzione '--read-interface = FILE' dice a haddock dove trovare i documenti. Tuttavia, lasciare che 'cabal' faccia il lavoro sia molto più semplice. –

+1

La Cabala ha lo scopo di semplificarti la vita. Perché aspettare? –

risposta

5

Ho intenzione di echeggiare la saggezza dei commenti alla tua domanda e di dire, basta usare Cabal. Non è una cosa in più da imparare, è qualcosa da imparare invece proprio perché si prende cura di tutti questi noiosi dettagli per te. Probabilmente avrai bisogno di saperlo comunque poiché tutti gli altri lo usano, quindi potresti anche ottenere il beneficio di quella conoscenza.

Per completezza, mi sono imbattuto cabal haddock -v su uno dei miei progetti, e questo è l'invocazione di haddock che ha usato:

/usr/local/bin/haddock --prologue=dist/doc/html/notcpp/haddock-prolog1566.txt --dump-interface=dist/doc/html/notcpp/notcpp.haddock --optghc=-package-name --optghc=notcpp-0.2.0.2 --hide=NotCPP.Utils --verbosity=1 --html --read-interface=/usr/local/share/doc/ghc/html/libraries/array-0.4.0.1,/usr/local/share/doc/ghc/html/libraries/array-0.4.0.1/array.haddock --read-interface=/usr/local/share/doc/ghc/html/libraries/base-4.6.0.0,/usr/local/share/doc/ghc/html/libraries/base-4.6.0.0/base.haddock --read-interface=/usr/local/share/doc/ghc/html/libraries/containers-0.5.0.0,/usr/local/share/doc/ghc/html/libraries/containers-0.5.0.0/containers.haddock --read-interface=/usr/local/share/doc/ghc/html/libraries/deepseq-1.3.0.1,/usr/local/share/doc/ghc/html/libraries/deepseq-1.3.0.1/deepseq.haddock --read-interface=/usr/local/share/doc/ghc/html/libraries/ghc-prim-0.3.0.0,/usr/local/share/doc/ghc/html/libraries/ghc-prim-0.3.0.0/ghc-prim.haddock --read-interface=/usr/local/share/doc/ghc/html/libraries/integer-gmp-0.5.0.0,/usr/local/share/doc/ghc/html/libraries/integer-gmp-0.5.0.0/integer-gmp.haddock --read-interface=/usr/local/share/doc/ghc/html/libraries/pretty-1.1.1.0,/usr/local/share/doc/ghc/html/libraries/pretty-1.1.1.0/pretty.haddock --read-interface=/usr/local/share/doc/ghc/html/libraries/template-haskell-2.8.0.0,/usr/local/share/doc/ghc/html/libraries/template-haskell-2.8.0.0/template-haskell.haddock --odir=dist/doc/html/notcpp/ --title=notcpp-0.2.0.2: Avoiding the C preprocessor via cunning use of Template Haskell --optghc=-fbuilding-cabal-package --optghc=-O --optghc=-odir --optghc=dist/build/tmp-1566 --optghc=-hidir --optghc=dist/build/tmp-1566 --optghc=-stubdir --optghc=dist/build/tmp-1566 --optghc=-i --optghc=-idist/build --optghc=-i. --optghc=-idist/build/autogen --optghc=-Idist/build/autogen --optghc=-Idist/build --optghc=-optP-include --optghc=-optPdist/build/autogen/cabal_macros.h --optghc=-hide-all-packages --optghc=-package-id --optghc=base-4.6.0.0-eac4fa0d0988628e5bd960fef8805b26 --optghc=-package-id --optghc=template-haskell-2.8.0.0-102a52a4fda28374255d0a3a8e99f26c --optghc=-XHaskell98 --optghc=-XTemplateHaskell --optghc=-W -B/usr/local/lib/ghc-7.6.1 dist/build/tmp-1566/NotCPP/ScopeLookup.hs dist/build/tmp-1566/NotCPP/LookupValueName.hs dist/build/tmp-1566/NotCPP/OrphanEvasion.hs dist/build/tmp-1566/NotCPP/Utils.hs

Ora, sono sicuro che gran parte di questo è opzionale, ma non ho intenzione di passare il tempo a capire quali sono i bit e quali no.

Problemi correlati