Rabbit holes are why I grew to love Haskell and pure-functional programming in general. For better or worse, Haskell (Agda, Idris...) doesn't let you compromise very often.
You could argue that this is terrible for productivity, and you might be right, but at the same time, means that a lot of people have done a lot of research on how to do things the "right" way in Haskell, and any project I've done with the language has led me to learning a whole slew of new things about type theory, category theory, and PL theory in general, which I can then take and apply to "productive" languages.