This is essentially what we achieved in the last example of the previous chapter, where we made the imperative version of factorial a lot safer by making local copies of the variables. The insidious aliasing problem that previously arose was then circumvented. If you're still not sure what's going on you should ask somebody to explain it to you. Even if you deliberately tempt the fates that bedevil careless imperative programmers who unintentionally or otherwise alias their variables, you will not be punished. Imperative programmers often use parameters for returning calculated values from called procedures.
Functional programmers tend to use a return mechanism.
If you want to see a transcript click here . Especially when it comes to passing structured data such as arrays or lists. As we have already noted, Scheme functions can modify the caller's data when the caller passes a list.