Skip to content
Back to formatted view

Raw Message

Message-ID: <a0428ec90901221350l76bc20fao4e44f4bb8b90655f@mail.gmail.com>
Date: 2009-01-22T21:50:40Z
From: Yi Zhang
Subject: how to get a primitive function object
In-Reply-To: <4978E664.8050201@idi.ntnu.no>

> i was sort-of joking, though it's a real option if you want it.
>
> but seriously, there's no reason for the &%#* lamenting:
>
> x <- 1
> '<-' = function(x,y) 0
> x <- 2
> # 0
>
> .Primitive('<-')(x,2)
> x
> # 2
>
> base::'<-'(x, 3)
> x
> # 3
>
> base::'<-'('<-', base::'<-')
> x <- 4
> x
> # 4
>
> vQ
>

I'm still not sure if this can help solve my problem. If I want to
overwrite the `<-` operator for a particular type of objects, but
preserve its effect for other regular objects (in other words, if I do
x<-5 with my new <-, x will be 5 and nothing strange happens), then
what should I put in the [ ] below?
old <- `<-`
old(`<-`, function(x, value){
  if (value is my type) do something
  [ ] # to bind the object value to symbol x: no matter what you do
here, the binding/assignment is local within this function?!
})

Hope I have made myself clear. Thanks,
-- 
Yi