Re: Okay, remember hearing that before, and I understand ...
Strict functional programming has no side-effects. What this means is that you can't change anything. You can, however, return something calculated from your inputs. Simplistically, a true functional program has an entry point, and all of the functions within just return a modified version of what's passed in, and the output is the result of calling all of the functions.
There are no global variables and no side-effects, and that's why a function will always return the same value given the same inputs. Nothing matters but the parameters that are passed in.
Because of this you have to go through some hoops to perform some imperative constructs: looping is done through recursion, for example.
// Crappy pseudocode example\nfunction forLoopPositiveIncrementsOnly(int from, int to, int inc, function dowhat)\n{\n if (from > to) return;\n dowhat(from);\n loop(from + inc, to, dowhat);\n}
Note that there IS a stack, but you can't modify the values on the stack, just use them.