[Rd] assignInNamespace and new bindings

Thomas Friedrichsmeier thomas.friedrichsmeier at ruhr-uni-bochum.de
Tue May 31 20:16:40 CEST 2011


On Tuesday 31 May 2011, luke-tierney at uiowa.edu wrote:
> Also note at the beginning of of th help file:
> 
>       Utility functions to access and replace the non-exported functions
>       in a name space, for use in developing packages with name spaces.
>                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> 
> This is intended only as a developer convenience, not as something to
> be used in production code. It is quite deliberate the name spaces are
> intended to be read-only once created. This allows the compiler to
> make assumptions about functions/constants defined in a name space.
> For now the compiler only uses this infomation for the base packages,
> but that could change in the future.

Could you elaborate a bit? In RKWard, we do make use of assignInNamespace(), 
mostly in order to insert hooks into functions where there are none by 
default. For example, in order to get correct interleaving of output generated 
by system() commands, and R output, we insert two calls for synchronization 
inside base::system() and base::system2(). As another example, we add some 
code into utils::select.list() to provide our own UI if graphics=TRUE. In 
total, currently, we have around a dozen calls to assignInNamespace(), for 
which I do not see any workable alternative.

None of these changes the function formals, environment, or type of return 
value. All of this is done only once, at the start of the session. Should I be 
worried that it will still interact badly with the compiler?

Regards
Thomas
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
URL: <https://stat.ethz.ch/pipermail/r-devel/attachments/20110531/efe27061/attachment.bin>


More information about the R-devel mailing list