/ / Was ist das Konstrukt $ ()? - Haskell, syntaktischer Zucker, Template-Haskell

Was ist das Konstrukt $ ()? - Haskell, syntaktischer Zucker, Template-Haskell

Ich habe versucht, in der Haskell-Referenz die Verwendung dieses zu finden:

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

Speziell:

$(widgetFile "home")

Ich weiß, dass der Operator $ Vorrang hat für alles, was rechts davon steht, aber ich konnte die Verwendung von $ () nicht verstehen. Jemand?

Antworten:

10 für die Antwort № 1

Dies verwendet nicht die $ Anwendungsoperator, aber beteiligt ist a Vorlage Haskell Scheibe.

Sehr grob, widgetFile "home" ist Code, der bei ausgeführt wird Kompilierzeit: Es generiert Haskell-Code, der dann wie üblich kompiliert wird. Es ist eine Form von Metaprogrammierung in Haskell.