Duncan Murdoch wrote:
> On 10/27/2006 10:24 AM, Peter Dalgaard wrote: > >> Paul Gilbert <[EMAIL PROTECTED]> writes: >> >>> >I.e., when x is missing in g, and g calls f(3,x), f will use its >>> >default value for x. >>> > > >>> Yes, that is the behaviour I am looking for. That is, f should do >>> what it normal would do if it were called with x missing. >> >> >> But if x has a default in g then that default should presumably be >> used? And what if x is given a value in the evaluation frame of g >> before it is used by f (which can happen, you know, even after the >> evaluation of f has begun)? Now imagine a longer chain of calls. >> >> I think what you're asking for is essentially dynamic scoping for >> missing arguments: you'd have to backtrack along the call chain to >> find the first instance where x is either given a value or has a >> default. This sounds messy. > > > I've been meaning to look at the code to see how this is handled now, > but haven't had a chance yet. I would guess at some level there's a > test something like > > if (name not in actualarglist) treat as missing > else treat as present > > I think Paul's suggestion could be implemented by making this just a > bit more complicated: > > if (name not in actualarglist || get(name) == SpecialMissingValue) > treat as missing > else treat as present > > where SpecialMissingValue is what as.missing() returns. > > So if my guess is right, this would be fairly easy to implement. But > it's also possible that this test shows up implicitly in many places, > in which case it would be a lot messier. Great! Let's hope it is not messy. BTW, I don't have any special reason to think as.missing() should be a function. It could be a special defined constant. > > Duncan Murdoch ==================================================================================== La version française suit le texte anglais. ------------------------------------------------------------------------------------ This email may contain privileged and/or confidential inform...{{dropped}} ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel