Чуть ниже на странице, на которую вы ссылались:
TemplateHaskell - особенно опасен, так как может вызывать побочные эффекты даже во время компиляции и может использоваться для доступа к абстрактным типам данных. С помощью TH очень легко нарушить границы модуля.
Беспокойство по поводу побочных эффектов связано с тем, что TH позволяет запускать произвольные IO
вычисления во время компиляции с использованием runIO
. Это бросило бы любую надежду на безопасность прямо в окно.
Нарушение границ модуля означает, что с помощью TH вы можете, например, получить доступ к конструкторам данных, даже если модуль не экспортировал их.
См. в этом хранилище , где приведено множество примеров того, что было бы небезопасно в Safe Haskell, включая пример нарушения границ модуля .
Возможно, что Template Haskell станет безопасным, если эти функции будут отключены, однако это потребует значительных изменений в TH.