¿Hay una lista de extensiones de GHC que se consideran "seguras"?

De vez en cuando, un fragmento de código que quiero escribir no es legal sin al menos una extensión de idioma. Esto es particularmente cierto cuando se trata de implementar ideas en artículos de investigación, que tienden a usar cualquier versión súper extendida de GHC disponible en el momento en que se escribió el documento, sin dejar en claro qué extensiones son realmente necesarias.

El resultado es que a menudo termino con algo como esto en la parte superior de mis archivos .hs:

{-# LANGUAGE TypeFamilies
           , MultiParamTypeClasses
           , FunctionalDependencies
           , FlexibleContexts
           , FlexibleInstances
           , UndecidableInstances
           , OverlappingInstances #-}

No me importa eso, pero a menudo siento que estoy haciendo sacrificios ciegos para apaciguar al Gran Dios de GHC. Se queja de que una determinada pieza de código no es válida sin la extensión de idioma X, así que agrego un pragma para X. Luego exige que habilite Y, así que agrego un pragma para Y. Para cuando esto termine, habilito tres o cuatro extensiones de idioma que realmente no entiendo, y no tengo idea de cuáles son "seguras".

Para explicar lo que quiero decir con 'seguro':

Entiendo queUndecidableInstances es seguro, porque aunque puede hacer que el compilador no termine, siempre que el código compile no tendrá efectos secundarios inesperados.

Por otra parte,OverlappingInstances es claramente inseguro, porque hace que sea muy fácil para mí escribir código que provoque errores de tiempo de ejecución.

Así que mi pregunta es:

¿Hay una lista de extensiones de GH que se consideran "seguras" y que son "inseguras"?

Respuestas a la pregunta(1)

Su respuesta a la pregunta