I don't think frozen-base by itself is enough to achieve the goal of
compiling n-year-old code without modifications.
Just a couple of examples that jump to mind:
- the recent change to require extensions for inferred types
- AMP (e.g. your code had a monad defined without an applicative instance)