Template Haskell: Gibt es eine Funktion (oder eine spezielle Syntax), die einen String analysiert und Q Exp zurückgibt?

Ich versuche, ein bisschen Template Haskell und Quasi Quotation zu lernen, und suche nach einer Funktion, die ein @ annimmString und analysiert es zuQ Exp, also der Typ ist:

String -> Q Exp

Ich habe versucht, in Google zu suchen, aber die Ergebnisse, die ich gesehen habe, hatten mit dem Anheben von String-Literalen auf @ zu tuQ Exp, und der nächste, den ich gefunden habe, warLanguage.Haskell.TH.dyn das macht ganz was ich will, aber nur für eine einzelne Variable.

Gibt es noch andere Möglichkeiten? Z.B. eine spezielle Syntax? Ich bin gerade dabei, mich mit @ vertraut zu mache[||] und$(), also gibt es vielleicht auch etwas für diesen Zweck?

Ein Beispiel dafür, wie ich es mir vorstelle:

runQ (parse "(1+)") == InfixE (Just (LitE (IntegerL 1))) (VarE GHC.Num.+) Nothing

Auch ich bin mir dessen bewusst

runQ [| (1+) |] == InfixE (Just (LitE (IntegerL 1))) (VarE GHC.Num.+) Nothing

Aber dies funktioniert nicht mit variablen Zeichenfolgen, da die Zeichenfolge darin verständlicherweise als Literal verwendet wird.

runQ [| "(1+)" |] == LitE (StringL "(1+)")

Bearbeiten (25.07.2015): Ich habe angefangen, @ zu verwendhaskell-src-meta, und es scheint soweit gut zu funktionieren. Allerdings dauert es ziemlich lange, biscabal install (ca. 10 Minuten auf meinem Computer). Was schade ist, mein Paket ist eigentlich eher klein und ich möchte, dass die Installation schnell gehen könnte. Kennt jemand eine Lösung, die kleinere Abhängigkeiten hat?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage