risposta

4

In teoria, sì. In pratica, no.

La ricerca di informazioni sui nomi esistenti viene effettuata utilizzando reify :: Name -> Q Info e, per una definizione del genere, si ottiene un valore VarI, che include un campo Maybe Dec. Ciò sembrerebbe suggerire che potresti in alcuni casi essere in grado di ottenere l'albero di sintassi per la dichiarazione della variabile, che ti permetterebbe di estrarre il letterale, comunque current versions of GHC always returns Nothing in this field, quindi sei sfortunato per una pura soluzione TH.

Tuttavia, TH consente di eseguire azioni IO arbitrarie, pertanto è possibile aggirare questo problema caricando e analizzando il modulo stesso utilizzando qualcosa come haskell-src-exts, tuttavia sospetto che sarebbe più un problema che non ne vale la pena.

Problemi correlati