From kynnjo at gmail.com  Sun Oct  2 19:29:52 2016
From: kynnjo at gmail.com (Kynn Jones)
Date: Sun, 2 Oct 2016 13:29:52 -0400
Subject: [Rd] On implementing zero-overhead code reuse
Message-ID: <CAFvQaj4Bcd-FW_z2Sc019d9JUa_Xy3Xz0HO=Ze16ZLnGJx4JiQ@mail.gmail.com>

I'm looking for a way to approximate the "zero-overhead" model of code
reuse available in languages like Python, Perl, etc.

I've described this idea in more detail, and the motivation for this
question in an earlier post to R-help
(https://stat.ethz.ch/pipermail/r-help/2016-September/442174.html).

(One of the responses I got advised that I post my question here instead.)

The best I have so far is to configure my PROJ_R_LIB environment
variable to point to the directory with my shared code, and put a
function like the following in my .Rprofile file:

    import <- function(name){
        ## usage:
        ## import("foo")
        ## foo$bar()
        path <- file.path(Sys.getenv("PROJ_R_LIB"),paste0(name,".R"))
        if(!file.exists(path)) stop('file "',path,'" does not exist')
        mod <- new.env()
        source(path,local=mod)
        list2env(setNames(list(mod),list(name)),envir=parent.frame())
        invisible()
    }

(NB: the idea above is an elaboration of the one I showed in my first post.)

But this is very much of an R noob's solution.  I figure there may
already be more solid ways to achieve "zero-overhead" code reuse.

I would appreciate any suggestions/critiques/pointers/comments.

TIA!

kj



[Rd] On implementing zero-overhead code reuse
Kynn Jones