什么是$()构造?

Lui*_*eis 10 haskell syntactic-sugar template-haskell

我一直试图在Haskell参考中找到这个的用法:

getHomeR = defaultLayout $ do
    setTitle "My Awesome Site"
    $(widgetFile "home")
Run Code Online (Sandbox Code Playgroud)

特别:

$(widgetFile "home")
Run Code Online (Sandbox Code Playgroud)

我知道$运算符优先于它的右边,但是我无法理解$()的用法.任何人?

chi*_*chi 10

这不是使用$应用程序运算符,而是涉及模板Haskell切片.

非常粗略,widgetFile "home"是在编译时运行的代码:它生成Haskell代码,然后像往常一样编译.它是Haskell 中元编程的一种形式.