2010-07-19 1 views
6

는 내가 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 
언어 기능이 $, 얻을 [$parseRoutes|/ Home GET|][$hamlet|%h1 Hello World|]에 사용되는 어떤

|,/및 % 기호가 작동하고 무엇을 상징 할 할 ?

답변

17

이들은 Quasiquotation입니다. Template Haskell을 사용하여 Haskell에 다른 언어를 포함시키는 방법입니다. quasiquotes의 parseRoutes와 hamlet은 괄호 안의 내용을 해석하고 해석하는 방법을 정의합니다 [$ FOO | ...]. 위의 링크에서 더 많은 세부 정보.

관련 문제