В документации для Safe Haskell указано:
[...] К сожалению, Template Haskell можно использовать для нарушения границ модуля и, таким образом, можно использовать для получения доступа к этому конструктору. [...] Использование флага -XSafe для компиляции модуля Danger ограничивает возможности Haskell, которые можно использовать, безопасным подмножеством. Сюда входит запрет unsafePerfromIO, Template Haskell, [...]
Используется как макросистема, которая транслирует AST в другой AST, если невозможно просто ограничить TH безопасным подмножеством Haskell, а также ограничить результирующий AST для этого подмножества?