The Evolution of a Haskell Programmer
Some time later, I came across Iavor’s “jokes” page, including a funny bit called “The Evolution of a Programmer“ in which the traditional imperative “Hello, world” program is developed through several variations, from simple beginnings to a ridiculously complex extreme. A moment’s thought turned up the factorial function as the best functional counterpart of “Hello, world”. Suddenly the Muse struck and I knew I must write out these examples, culminating (well, almost) in the heavily generalized categorical version of factorial provided by Uustalu, Vene and Pardo.
[…]
On a more serious note, I think that the basic idea of the joke (successive variations on a theme, building in complexity) can serve a good pedagogical purpose as well as a humorous one.
Update (2016-02-09): Comments from Hacker News.