2010-07-19 8 views
6

Ho trovato questo codice sulla prima pagina del progetto Yesod:

import Yesod 
data HelloWorld = HelloWorld 
mkYesod "HelloWorld" [$parseRoutes|/ Home GET|] 
instance Yesod HelloWorld where approot _ = "" 
getHome = applyLayout [$hamlet|%h1 Hello World|] 
main = toWaiApp HelloWorld >>= basicHandler 3000 

Quali caratteristiche del linguaggio sono utilizzati in [$parseRoutes|/ Home GET|] e [$hamlet|%h1 Hello World|] per ottenere il $, |,/e% simboli di lavoro, e che cosa fanno i simboli fanno ?

risposta

17

Questi sarebbero uno Quasiquotation. È un modo di usare Template Haskell per incorporare un'altra lingua in Haskell. Le parseRoutes e il hamlet di quasiquotes definiscono come analizzare e interpretare cosa c'è dentro la parentesi [$ FOO | ...]. Molti altri dettagli al link sopra.