$() 结构是什么?

What is the $() construct?

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

getHomeR = defaultLayout $ do
    setTitle "My Awesome Site"
    $(widgetFile "home")

具体来说:

$(widgetFile "home")

我知道 $ 运算符优先于它右边的任何内容,但我一直无法理解 $() 的用法。有人吗?

这不是使用 $ 应用程序运算符,而是涉及 Template Haskell slice

非常粗略地说,widgetFile "home" 编译时 运行 的代码 :它生成 Haskell 代码,然后编译为通常。它是 Haskell 中的 metaprogramming 的一种形式。