在[$ parseRoutes |/Home GET |]中使用了什么样的Haskell语法?

qom*_*omp 6 syntax haskell web-applications yesod template-haskell

我在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
Run Code Online (Sandbox Code Playgroud)

使用哪些语言功能[$parseRoutes|/ Home GET|]以及[$hamlet|%h1 Hello World|]使$,|,/和%符号起作用,这些符号的作用是什么?

Jac*_*tte 17

那些将是Quasiquotation.这是一种使用Template Haskell将另一种语言嵌入Haskell的方法.quasiquotes的parseRoutes和hamlet定义了如何解析和解释括号内的内容[$ FOO | ......] 上面链接中的更多细节.