Thinking Functionally with Haskell: Types? Tests? We Need a New Word by Paul Callaghan.
From the post:
In which we explore what modern type systems bring to the table.
Imagine an approach to programming where you write down some description of what your code should do, then before running your code you run some automatic tool to see if the code matches the description. That’s Test-driven development, you say!
Actually, this is what you are doing when you use static types in most languages too. Types are a description of the code’s inputs and outputs, and the check ensures that inputs and outputs match up and are used consistently. Modern type systems—such as in Haskell or above—are very flexible, and allow these descriptions to be quite detailed; plus they are not too obtrusive in use and often very helpful.
One point I’ll investigate here is how advances in types are converging with new ideas on testing, to the point where (I claim) the old distinctions are starting to blur and starting to open up exciting new possibilities—hence my suggestion that we need a new word to describe what we’re doing that is free from preconceptions and out-dated thinking.
So put aside your bad experiences from Java, and prepare to be amazed!
I suppose we should all wish Paul luck on finding words that are “…free from preconceptions and out-dated thinking.”;-)
It has been my experience that “new” words replace “[existing] preconceptions and out-dated thinking,” with “[different] preconceptions and out-dated thinking.”
Not a bad thing but let’s be honest that we are contending for different preconceptions and assumptions as opposed to having none at all.
Has the potential to make us less resistant when some (then) younger programming generation wants to overturn “…preconceptions and out-dated thinking.”
If you haven’t kept up with type theory, you should spend some time with Paul’s post. Maybe suggest a new word or two.