Цитирование TemplateHaskell документирует две кавычки (''
) как способ получить Имя типа:
> ''String
GHC.Base.String
Это прекрасно работает для этого типа (имя).Тем не менее, я не могу найти способ заставить его работать хорошо, например, Maybe String
:
> ''Maybe String -- interprets String as a data constructor
> ''Maybe ''String -- wants to apply ''String to the Name type
Я знаю, что могу обойти с помощью [t| Maybe String |]
, но это тогда в монаде Q, итребует изменения типа, и я думаю, что не проверяется типом в соответствующий момент, только при объединении.
Я также могу обойти, сначала определив псевдоним типа, type MaybeString = Maybe String
, а затем используя ''MaybeString
, но это также громоздко.
Любой способ напрямую получить то, что я хочу, просто через цитату ''
?