Когда я пытался узнать о TH, я обнаружил, что он допускает произвольные IO
действия во время компиляции (см. Что такого плохого в Template Haskell?< /а>). Мне это кажется довольно опасным. Это почему? Это действительно необходимо для некоторых задач? Или это просто упрощение его конструкции, чтобы «выбросить все нечистое в IO
корзину для грехов»?
Обновление: мне также было бы интересно, есть ли какие-либо попытки создать безопасное подмножество TH, запрещающее произвольные IO
операции.