Template Haskell: Existe uma função (ou sintaxe especial) que analisa uma String e retorna Q Exp?

Estou tentando aprender um pouco de Template Haskell e Quasi Quotation, e estou procurando por uma função que faça umaString e analisa paraQ Exp, então o tipo é:

String -> Q Exp

Tentei pesquisar no hoogle, mas os resultados que vi foram relacionados ao levantamento de literais de String paraQ Exp, e o mais próximo que encontrei foiLanguage.Haskell.TH.dyn o que faz exatamente o que eu quero, mas apenas para uma única variável.

Existem outras opções? Por exemplo. uma sintaxe especial? Estou apenas no processo de me familiarizar com[||] e$(), então talvez haja algo para esse fim também?

Um exemplo de como eu imagino que funcionaria:

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

Além disso, estou ciente disso

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

mas isso não funcionará com cadeias de caracteres variáveis porque - compreensivelmente - a cadeia de dentro é considerada literal.

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

Editar (25-07-2015): Eu comecei a usarhaskell-src-meta, e parece funcionar bem até agora. No entanto, leva bastante tempo paracabal install (cerca de 10 minutos na minha máquina). O que é uma pena, meu pacote é realmente pequeno e eu gostaria que a instalação fosse rápida. Alguém sabe de uma solução que tenha dependências menores?

questionAnswers(1)

yourAnswerToTheQuestion