Let us suppose that we have a function foo(X) which is called inside
another function, bar(). Suppose, moreover, that the name "X" has been
assigned a value when foo is called.

I have noticed that many functions contain arguments with defaults of
the form X=X. Call this reflexive assignment. How is foo(X=X)
different from foo(X)? Isn't the environment from which X is located
the parent environment of foo() in either case? Or if it looks first
in the environment of foo, will it not immediately pop up to the
parent frame if it is not found in foo? Are reflexive assignments just
to keep X from being positionaly assigned accidentally, or are They
doing something deeper?

A question which is (I think) related: Is it good or bad practice,
when defining a function inside another function, to use the name of a
variable from the calling function as the argument of the called
function?

	[[alternative HTML version deleted]]

