Ok, full disclosure, I’m relatively new to Haskell. I don’t have an example project that’s unmaintainable because of extensions. Hence my guarded language (“likely”, “could”).
But my concerns are backed up by some practical experience. I wanted to contribute to a Haskell project (nameless, to protect the innocent) and the first module I opened up used:
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TypeFamilies #-}
(other modules used other extensions). I hate guesswork, so I set about reading the docs for the unfamiliar extensions.
Flexible contexts didn’t seem too threatening, except that the docs were for GHC 9.0.1 and the latest docs are much terser (why?). The older docs were in a section that pointed at the paper Type classes: exploring the design space, which looked like a challenging read in itself.
Type families looked harder. The docs linked to three academic papers and then extended over several pages. The Haskell wiki page on type families was a little gentler, but still pretty off-putting.
I dare say if I regarded getting up to speed on each of these extensions as a project in its own right, I could eventually become sufficiently confident that I would then know how to work with the module in question.
Perhaps the solution is education and hiring, so that there is a sufficient pool of developers familiar with the most common extensions. But from my perspective as a seasoned programmer, that just feels like another symptom of the potential for unmaintainability.