2013-04-06 20 views
13

Sto seguendo il libro Yesod, in cui si afferma:GHC opzione -ddump-giunzioni - Template Haskell

Ma utilizzando l'opzione GHC -ddump-giunzioni, possiamo immediatamente di una sguardo al generata codice. Una versione molto pulita di questo è:

Come farei questo? Ho provato a compilare il mio file con ghc -XTemplateHaskell -ddump-splices Page.hs, che lascia la directory come segue:

Page Page.hi Page.hs Page.hs~ Page.o

Nessuno di questi file, tuttavia, contenere il codice intermedio generato dal modello di Haskell.

http://www.yesodweb.com/book/basics

+1

Totale novizio qui - come deve essere usato questo comando? Se eseguo ghc come hai scritto (con helloworld.hs), ottengo "Impossibile trovare il modulo 'Yesod'" Posso solo compilare/eseguire usando 'stack runghc helloworld.hs' – Ixx

risposta

12

Nel frattempo il comportamento modificato e la bandiera -ddump-to-file in aggiunta alla bandiera -ddump-splices provoca le giunzioni da scrivere su un file, vedere Section 9.26 della corrente (GHC 8.2.1) Documentazione per maggiori dettagli.


su versioni precedenti di GHC (non ho controllato, in cui la versione esattamente il comportamento cambiato), -ddump-splices lavorato in modo diverso:

L'opzione -ddump-splices provoca GHC per eseguire il dump dei giunzioni a stderr. Purtroppo, la bandiera -ddump-to-file non influisce giunzioni (non so se questo ha ragioni più profonde o è solo una svista), quindi è necessario catturare l'output stderr per salvare le giunzioni per le indagini in seguito,

ghc -XTemplateHaskell -ddump-splices Page.hs 2> Page.dump-splices 

su shell sufficientemente bash.

+1

Grazie. Perché viene visualizzato su stderr anziché, ad esempio, su stdout? –

+3

Non lo so. Ci può essere una ragione, o potrebbe essere un incidente storico. Probabilmente bisognerebbe chiedere una risposta al quartier generale. –

+1

In base a https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/template-haskell.html, questo è stato modificato nel frattempo. Dichiara di eseguire il dump su stdout per impostazione predefinita e '-ddump-to-file' dovrebbe eseguire il dump su un file' .dump-splices'. – robx

Problemi correlati