
On Fri, Sep 14, 2012 at 2:18 PM, Andrew Pennebaker wrote:
A summary of the changes I've included so far: [...]
Another comment:
"As a declarative language, Haskell manipulates expressions, eventually reducing expressions to values."
Huh? In what sense do declarative languages manipulate expressions? Sounds like a classic syntax/semantics confusion, especially when interpreters and/or lazy evaluation (implementation issues, not language properties) are in the mix.
Noted and reflected in the new version.
I'm trying to introduce the concept of declarative programming as opposed to imperative programming. Declarative programming according to Wikipediahttp://en.wikipedia.org/wiki/Declarative_programming :
is a programming paradigm that expresses the logic of a computation
without describing its control flow.
I believe this is done in Haskell and other declarative languages by treating code as manipulable, reducible expressions, where imperative languages would use machine instructions.
I'm struggling to find anything in this belief/opinion that I can relate to. How did you come by it? What experiments can you perform to check whether it's true or false? I second Albert Lai's recommendation to use the scientific method. Along these lines, I still see "Haskell manipulates reducible expressions, eventually reducing them to values" in your tutorial, which again I suspect comes from confusion between syntax & semantics and/or between meaning and possible execution strategy. Regards, - Conal