【问题标题】:What is the $() construct?什么是 $() 构造?
【发布时间】:2015-09-15 03:27:43
【问题描述】:

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

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

具体来说:

$(widgetFile "home")

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

【问题讨论】:

    标签: haskell syntactic-sugar template-haskell


    【解决方案1】:

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

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

    【讨论】:

    • 我明白了,它与 $ 运算符无关。然后widgetFile "home" 将负责在编译时动态生成此代码?
    • @LuisDosReis 是的。例如,它可能会访问一个外部文件,对其进行处理,并根据它生成一些 Haskell 代码。这可以用来获得一个非常通用的#include,例如,其中包含的文件可以使用不同的语法。
    • 哦,很有趣,所以我也可以应用元编程来处理不同的语言。
    猜你喜欢
    • 2013-03-29
    • 2011-08-13
    • 2012-04-16
    • 2012-03-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多