Hi Abby: your questions are good but I can't help because I don't need to actually use them to that level of detail. I only have to understand it in its generalities. Hopefully, Martin or one of the other R-core people or guRus can answer your questions in a definitive and clear way.
But, as far as the term closure, I think that they referring to the environment that a function looks in after its looks in its own environment. So, if you defined a function say, foo, in the global environment, then the foo's closure is the global environment because, when finding the values of variables, foo will first look in its environment and then its closure. So, closure is just an environment that's the parent of a function's environment. It answers the question of where a function looks next when it can't find the values of some of the variables that it needs to evaluate. I'd also love to hear an explanation of "frame' because that term has always confused me I think ( emphasis on think ), when a function, foo, gets called, it creates a new environment to evaluate its arguments and this new environment of foo is called a "frame". But where is it and what is its parent ? Is "frame" just a fancy term for the function's own environment ? or is the function's own environment the parent of its evaluation frame I'm not sure. I have other documents that may help ( I recently did a document gathering but I only read the one I sent you ) but I think it's better to wait to see if anyone can help here first. Then, if not, I can send you some other things. Oh, the slot question was also interesting but I've never used S4. Also, this list has gotten thinner over the years so another place to ask is of course stackoverflow. On Sun, May 3, 2020 at 6:19 AM Abby Spurdle <spurdl...@gmail.com> wrote: > Hi Mark, > > The article is good. > However, there's still some grey areas. > > The documentation for base::typeof equates a closure with a function. > However, the article defines a closure as a function together with an > environment. > A very minor difference I know, but it creates the problem that the > word closure is used inconsistently. > And that's without even getting into "frames". > > Equating a closure with a function (only), is perhaps misleading...??? > > Also, re-iterating I use function objects with attributes. > (I prefer this approach, because I can make copies of function > objects, and if necessary modify them). > My guess is that doesn't meet the definition of an R closure (if you > ignore the environment)...???, and it's unclear whether it meets the > definition of a closure, more generally...??? > > So, I've still got the same problem, of how to refer to functions that > have *either* attributes *or* environments, containing data. > Maybe I should just stick to "Self-Referencing Function Objects" and > "Functions Bundled with Data"...??? > > One last thing, the last time I read S4 documentation, I couldn't tell > if it was possible to have S4-based function objects, and if so, could > the body of the S4-based function object (while being called) access > it's own slots...??? > > > On Sun, May 3, 2020 at 4:27 PM Mark Leeds <marklee...@gmail.com> wrote: > > > > Abby: Here is an article on environments/closures which might be useful > to you. I was reviewing environments recently and it > > was a clear explanation of how environments/closures work in R. Even > though it's from 2000, I'm pretty certain that everything > > said in it still holds. > [[alternative HTML version deleted]] ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.