Проблемы с цитированием типов в TemplateHaskell

Цитата TemplateHaskell документирует две кавычки ( '' ) как способ получить имя типа:

> ''String
GHC.Base.String

Это работает штраф для этого типа (имя). Однако я не могу найти способ заставить его работать, например, Может быть String :

> ''Maybe String -- interprets String as a data constructor
> ''Maybe ''String -- wants to apply ''String to the Name type

Я знаю, что могу решить эту проблему, используя [t | Может быть, String |] , но тогда он находится в монаде Q и требует изменения типа, и я думаю, что тип не проверяется в соответствующий момент, только при вставке.

Я также могу сначала обойти определение псевдонима типа type MaybeString = Maybe String , а затем использование '' MaybeString , но это также громоздко.

Любой способ напрямую получить то, что я хочу, просто с помощью цитаты '' ?

6
задан iustin 20 September 2011 в 17:17
поделиться