I think that's true for anyone who's comfortable with proofs by induction, but most people aren't until well past the point where they'd normally learn to program.
You don't need to understand proof by induction to use these techniques. It's more than I have the energy to explain in a comment here, but the chapter on "Structural Recursion" at http://www.creativescala.org/creative-scala.pdf shows some of my thinking (though it has evolved a bit since that written.)
But more importantly, I can tell you that the design recipe isn't enough. That's why we set out to study the notional machine question (paper cited in another response). We most definitely need it too; what we're trying to figure out is what form of notional machine matches best.
Comments
I think that's true for anyone who's comfortable with proofs by induction, but most people aren't until well past the point where they'd normally learn to program.
You don't need to understand proof by induction to use these techniques. It's more than I have the energy to explain in a comment here, but the chapter on "Structural Recursion" at http://www.creativescala.org/creative-scala.pdf shows some of my thinking (though it has evolved a bit since that written.)
Looks rather like an abbreviated version of the _How to Design Programs_ design recipe to me…
It sure is!
Sure would have been nice to give credit, then…
But more importantly, I can tell you that the design recipe isn't enough. That's why we set out to study the notional machine question (paper cited in another response). We most definitely need it too; what we're trying to figure out is what form of notional machine matches best.
You're absolutely right on giving credit. I've added this: https://github.com/underscoreio/creative-scala/commit/6ecaa4...
And thanks for mentioning the paper. I'll give it a read.