To put a little more concrete example into what Peter and Ben said about the environment being key:
environment(c) # NULL This is a primitive, so it has no environment environment(library) # <environment: namespace:base> Built-in function but it has an environment (usually the namespace of the package whence it comes) But don't think that's only because library() does all its work at the "R-level" while c() works at the C level environment(as.vector) # Same as above: this function is implemented as an "Internal" which means (basically) it goes straight to the C level as well # (For completeness sake, it can dispatch as an S3 generic back to R) So the lesson is -- almost anything is a closure except for things that are explicitly primitives. Michael On Thu, Jan 19, 2012 at 4:19 PM, peter dalgaard <pda...@gmail.com> wrote: > > On Jan 19, 2012, at 21:39 , Ben Bolker wrote: > >> Ajay Askoolum <aa2e72e <at> yahoo.co.uk> writes: >> >>> >>> Michael, thank you, especially for the link. I think I understand. >>> >>> The vocabulary is so different! I know 'closure' as 'user-defined function'. >>> >> >> Not quite. All (??) user-defined functions are closures, but lots >> of non-user-defined functions are closures too ... >> > > Also, it is not actually the function that is the closure, it is the function > completed with its environment, which is where, during evaluation, unbound > objects will be sought. > > The function itself is a parsed version of the function definition. When > called, almost all functions will need to find something from their > environment, e.g. the "<-" operator. The only functions that are completely > self-contained are those that return a constant or one of the function > arguments (maybe a few more). > > -- > Peter Dalgaard, Professor, > Center for Statistics, Copenhagen Business School > Solbjerg Plads 3, 2000 Frederiksberg, Denmark > Phone: (+45)38153501 > Email: pd....@cbs.dk Priv: pda...@gmail.com > > ______________________________________________ > R-help@r-project.org mailing list > 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. ______________________________________________ R-help@r-project.org mailing list 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.