"It could be any type" has always been a truism. It has never been an issue of contention. The issue has always been "but who gets to choose". Teachers and tutorial writers still don't address that up front and head on; they spend 99 minutes harping on "any", watch students fail, and finally spend 1 minute to reveal "but you don't choose". As opposed to revealing that in the 1st minute so everyone can save the other 99 minutes. Perhaps they think that it is obvious to themselves, and need not be said to students. Perhaps they need to ensure a certain high variance in student marks. Less flexibility for the provider equals more flexibility for the user. Less cavalier power for the writer equals more predictive power for the reader. Cavalier power has previously been known as convenience, flexibility, and expressive power, for the writer; extreme examples include self-modifying code and performing list operations on complex numbers (let us call that type cavalierism, so that we have a judgmental name for the antithesis to type safety); mild examples include type-case and allowing effects everywhere. Programming is a dialectic class struggle between the user and the provider, between the reader and the writer. Given the type signature f :: a -> Bool and the restriction of "no type-case" and "no effect" such as in Haskell, if a simple test results in f () = True, then I know f 5 = True, f "hello" = True, universally f x = True. I need just one test case, f (), to complement the type. This is from the free theorems that Phil Wadler talks about in the article "theorems for free!". Perhaps f is a useless function. Here is a useful function: dpc :: a -> [a] If a simple test results in dpc () = [(), (), ()], then I know dpc x = [x, x, x] universally. replicate 3 is, certainly, a useful function, at least for glue code. And it is important to know that I will not be trolled by "you get a list of 4 if the type is Double, and you get random numbers in the list if the type is Int". The writer's loss of cavalier power is my gain of predictive power. Your freedom is my slavery. Your ignorance is my strength. Your war is my peace. Customers who like this article may also like the following from the same author: http://www.vex.net/~trebla/weblog/any-all-some.html http://www.vex.net/~trebla/haskell/prerequisite.xhtml#leibniz and this talk (50 minutes) from another author: http://www.youtube.com/watch?v=TS1lpKBMkgg