dmurdoch@pair.com
2000-Nov-22 12:56 UTC
[Rd] How do you construct a function from a list? (PR#743)
On Wed, 22 Nov 2000 13:08:26 +0100, Kurt Hornik wrote: .>>>>> Duncan Murdoch writes: >> I'm trying to get a data.restore function to work on functions. One >> thing I can't figure out: how do you construct a function from it's >> component parts?...>> forloop <- >> as.call(list(as.name('for'),as.name('i'),1,as.call(list(as.name('junk'))))).> >I think the easiest approach is to do > > foo <- function() {} > body(foo) <- forloopThat one gives me the same as "as.function(list(forloop))", i.e. function () list(for (i in 1) junk()) I'm running this in 1.1.1 on Windows, but I tried a Nov 14 development snapshot, and got the same results. I think this is a bug in as.function.default, because of these two examples: For a function with arguments, as.function undoes as.list: > options(keep.source=F) > withargs <- function(x) for (i in 1) junk() > withargs function (x) for (i in 1) junk() > as.function(as.list(withargs)) function (x) for (i in 1) junk() For a function with no arguments, it doesn't: > noargs <- function() for (i in 1) junk() > noargs function () for (i in 1) junk() > as.function(as.list(noargs)) function () list(for (i in 1) junk()) I looked at the source (do_asfunction in main/coerce.c), but couldn't understand what was going on well enough to figure out the bug. Duncan Murdoch --please do not edit the information below-- Version: platform = Windows arch = x86 os = Win32 system = x86, Win32 status = major = 1 minor = 1.1 year = 2000 month = August day = 15 language = R Windows 9x 4.90 (build 3000) Search Path: .GlobalEnv, Autoloads, package:base -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.- r-devel mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html Send "info", "help", or "[un]subscribe" (in the "body", not the subject !) To: r-devel-request@stat.math.ethz.ch _._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._
Possibly Parallel Threads
- How do you construct a function from a list?
- [LLVMdev] What opt pass attempts implements this optimization?
- [LLVMdev] What opt pass attempts implements this optimization?
- sftp tab completion patch (First release - NOT FOR INCLUDING YET)
- Revisiting sftp tab completion patch