2010-08-29 17 views
8

Se ho avuto la linea{} in .cabal dell'eglefino documentazione in Haskell

> { -# OPTIONS_GHC -fglasgow-exts -XTemplateHaskell #- } 

nella documentazione-parte (descrizione) del .cabal file Prendo il messaggio di errore

haddock: parsing haddock prologue failed 

durante l'esecuzione

$ cabal haddock 

ma se mi libero della { e } tutto funziona bene. C'è un modo per fuggire {} in modo che possano essere utilizzati nella descrizione?

+2

Sembra che non si può effettivamente avere {} nei campi. Ho letto il parser e non sembra esserci alcuna previsione per l'escape dei {} s che denotano un'area sensibile a non-indentazione nel file Cabal. (BTW, non è "OPTIONS_GHC" deprecato? Probabilmente meglio dire '{- # LANGUAGE TemplateHaskell # -}'.) Ho cercato esempi di persone che cercavano di farlo su Hackage e tutto ciò che ho trovato era (presumibilmente) il tuo tentativo. Forse spostare il codice cut-n-paste in un file diverso ... o fare una modifica non compatibile all'indietro con il parser :( – jrockway

+0

Oh yeah, e io uso 'test-framework-th' e ho capito quale pragma Avevo bisogno senza dettagli nella descrizione, quindi forse i documenti non sono necessari :) – jrockway

+0

@jrockway: Grazie. Userò semplicemente '(...)' invece di '{...}'. – finnsson

risposta

2

OPTIONS_GHC non è deprecato (si utilizzerebbe questo per abilitare determinate opzioni di compilazione, ad esempio), ma utilizzarlo per attivare/disattivare le funzionalità della lingua non è considerato una buona pratica. Utilizzare invece i comandi {-# LANGUAGE ... #-}.

ad es. {-# LANGUAGE TemplateHaskell, ForeignFunctionInterface, RankNTypes #-}

Inoltre, è considerata una cattiva forma utilizzare l'onnicomprensivo -fglasgow-exts. È meglio includere solo le estensioni di cui hai bisogno e in questo modo è più chiaro che sono necessarie per chiunque sia nuovo al tuo codice.

+1

Questo è un buon consiglio, ma non tenta nemmeno di rispondere alla domanda. –

3

L'eglefino ha due sintassi per i blocchi di codice: la sintassi che delimita i blocchi con @ consente di utilizzare gli escape HTML, che possono essere utilizzati per incorporare caratteri che il parser di Cabal non è in grado di gestire.

Sfortunatamente, sembra che Cabal rimuova gli spazi bianchi iniziali da @ blocchi -dimitati, quindi è necessario anche precedere qualsiasi riga con spazi con uno spazio con codifica HTML  .

Ecco am esempio:

description: 
    My package with a code example! 
    . 
    @ 
    {-\# LANGUAGE TemplateHaskell \#-} 
    . 
    main = do 
      $templatePrint "hello!" 
      $templatePrint "world!" 
    @ 

che rende a:

Il mio pacchetto con un esempio di codice!

{-# LANGUAGE TemplateHaskell #-} 

main = do 
    $templatePrint "hello!" 
    $templatePrint "hello!" 
Problemi correlati