什么是$()构造?

时间:2015-06-28 17:23:04

标签: haskell syntactic-sugar template-haskell

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

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

具体做法是:

$(widgetFile "home")

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

1 个答案:

答案 0 :(得分:10)

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

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