
Peter Verswyvelen wrote:
I really doubt people tend to think in either way. It's not even sure our thinking can be modeled with computing no?
Well, try this: Go ask a random person how you add up a list of numbers. Most of them will say something about adding the first two together, adding the third to that total, and so forth. In other words, the step by step instructions. Very few of them will answer that the sum of an empty list is defined to be zero, and the sum of a non-empty list is defined to be the first number plus the sum of the list tail. Then again, few non-programmers will set anything about creating a counter variable and initialising it to zero either; this is a programming "artifact". (Humans don't think like this internally, but most programming languages conceptually require it.) Nobody has much difficulty with this, so maybe the only problem with Haskell is that everybody learns to program "the other way" first, before they get to Haskell...