>>33
Real-world: Program that has a goal to do X. It doesn't introduce complexity for its own sake, only doing what is required by its specification.
Academic: Program that can do X, just because it looks elegant or complex/elaborate thing that intellectuals like to construct.
Purely academic: program that serves no useful purpose, except for
intellectual bragging rights to showcase some abstract capability like higher kinded abstract types or elaborate macro juggling construct that is impossible to debug.