Learning Haskell makes you a better programmer?
Walter Bright
newshound2 at digitalmars.com
Fri Dec 28 00:53:58 PST 2012
On 12/28/2012 12:13 AM, Red wrote:
> Why is immutable data considered necessary for functional programming style?
> Can't a a programmer or programmer just do the same thing with mutable data, but
> not mutate it?
People who say that C++ supports functional programming make exactly that argument.
The problem, though, is this:
T func(U u); // this is a pure function
What does that tell you about func? It takes a U as one of its inputs, and
returns an instance of T. The comment, of course, means nothing. func may read
or write mutable global state, it may mutate whatever u references. How would
you know?
If you wrote all the code yourself, and you didn't make any mistakes, perhaps
you would know. But if you are handed this code, or you work on a team, you
would have no idea. There is no tool to check it, so you'd be reduced to
manually going through every line of it and every line of every function that
func() calls, etc.
Then when a member of your team checks in code, you're back to square one, and
have to start over with the manual verification, and hope you didn't make a
mistake with that.
Of course, nobody does something that tedious, and defaults back to trusting the
comment, which is what I'd call "faith-based programming".
I don't believe that faith-based programming scales well at all. Programs are
getting bigger and bigger all the time, and the growth of static analysis tools
suggests that we *need* mechanical verification of properties. Faith-based
programming is going to wind up on the ash heap of history.
The bottom line is that a language that does not support mechanical verification
of functional programming, does not support functional programming.
More information about the Digitalmars-d
mailing list