Originally Posted by
phantomotap
It depends on what the function does, what operations are involved, and what error handling is necessary.
A function operating on native types (any operations that do not generate errors) can probably just return instances of those types (values).
A function counting matches with a predicate may impose requirements (no errors) on the operations involved.
A function likely to fail during normal execution should probably not mutate parameters unless absolutely necessary.