Re:Functional Programming Patterns
by tel on Sunday November 30, 2014 @05:32PM
(#8678447)
Imperative requires order but they are not identical. Imperative tends to mean "sequence of instructions which operate on an exterior set of mutable state cells" versus functional which often means "set of expressions which reduce into values". Each can model the other, but let is clearly functional in this model since its meaning derives entirely from a reduction semantics.
[ Parent
| on HN ]
See my link down thread. I think this really comes down to the murkiness in definitions of declarative and imperative. I did find a later definition that points out that these are no longer duals of each other.
I was actively avoiding the obviously imperative functions, though. Not sure why. That is, I could have simply said that the existence of all of the functions that end in exclamation points shows the language is imperative.
The imperativeness of Racket really doesn't come so much from the *! functions, but instead things like `begin` which explicitly sequence program statements in such a way that only allows them to interact via external mutable state.
I have a feeling we are on yet different definitions of imperative and such.
(define x 3)
(display x)
(set! x (add1 x))
(display x)
is about as imperative as they come, by my definition. And not a begin in site.