2013-05-05 7 views
6

Ho letto il codice qui sotto in Indexed MonadChe cosa fanno queste parentesi quadre in Haskell?

{-# LANGUAGE QuasiQuotes #-} 
import Control.Monad.Indexed.State 
import Control.Monad.Indexed 
import Language.Haskell.IndexedDo 

hoge :: IxState Int [Int]() 
hoge = [ido|do 
    imodify (*10) 
    imodify show 
    imodify reverse 
    imodify (++"123") 
    imodify $ map fromEnum 
    |] 

Qual è la sintassi di questi simboli [|....|]?

È una specie di zucchero sintassi?

+1

Questo è [Template Haskell] (http://www.haskell.org/haskellwiki/Template_Haskell). –

risposta

8

Questa è la sintassi quasiquotation. Vedi anche lo wiki page. Il testo tra [ido| e |] viene passato letteralmente alla quasiquotore ido, che lo utilizza per generare un codice Haskell in fase di compilazione.