On Mon, Apr 28, 2014 at 2:55 PM, Konrad Rudolph <
konrad.rudolph+r-de...@gmail.com> wrote:

>
> So this is my question: what do other people think? Which is the most
> useful and least confusing alternative from the users’ perspective?
>

The most useful is alternative is "write packages".

 The overhead is minimal (install devtools, create("foo"); repeat {
load_all("foo") ; edit; until_bugs==0} ). Reloading a package is a
one-liner, you can't get more minimal.

 And with that you get a structure for documentation, a metadata standard,
a wide range of sanity checks, and the option to push to CRAN or github for
distribution. What you don't get is hierarchies.

 Can we get a hierarchy into base packages? That's the real question, and
if answered I think it makes your module package redundant. I'd love to see
a hierarchy with a colon-separator or something, so if I have a package
with foo/R/thing.R and foo/R/this/thing.R I can do:

 require(foo)
 thing()
 this:thing()

or similar....

I do like your approach of returning an object that provides an access to
the functions without side-effects, but the masses are so brainwashed into
thinking that require(foo) can put an unknown number of unknown-named
functions into your search list that I don't think it will ever get into
base R...

Note I did once write a simple file loader to avoid using source - it used
sys.source to load files into an environment on the search path, storing
the folder name so that it could be easily reloaded, but then devtools came
along...

If you want your module package to succeed you are going to have to
duplicate all the good stuff in packages - documentation, metadata,
distribution (trivial: zip/unzip/pull/push), and then another problem -
people will grow out of it - they'll start writing C and Fortran code.
Going to support that? devtools already does.


Barry

        [[alternative HTML version deleted]]

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to