From zhengda1936 at gmail.com  Sun Mar  5 21:52:41 2017
From: zhengda1936 at gmail.com (Da Zheng)
Date: Sun, 5 Mar 2017 15:52:41 -0500
Subject: [Rd] can we override "if" in R?
In-Reply-To: <CAOQ5Nyc87Vd+khdNw4ha0QRJKUVHsXWNoQJZmS6AKYjkZvbWPw@mail.gmail.com>
References: <CAFLer83hbY+3QEfoukAmt4Hy77P5=NyW3a+pyigV0CJVjzjYdA@mail.gmail.com>
	<CABtg=KkmsPVZc0Y-Rru5+DkzLHabrkVDOZWcip5jhYHD-D4HZg@mail.gmail.com>
	<CAFLer83OTdZQq+=Uj5g7fqmph8-FWwa7pFSMmz_dhcKhs8DuCA@mail.gmail.com>
	<CABtg=Kn83hAzBGyJkVrWciAYadJDsT2GmLPY4OF2_o30cxG1Ww@mail.gmail.com>
	<CAFLer83n1uv_14fLBYg78CkAKiEUsMjeSXObto7gSyS+0TTfpA@mail.gmail.com>
	<CAOQ5Nyeyy60U+q0fp9M_QyrQRkb6ynNMzWzWgUWXxVXFzGUVJQ@mail.gmail.com>
	<CAFLer82zMrfL5cQH78QAkKJf+2GU=JGnU4ScsE6MCOobDoxetw@mail.gmail.com>
	<CAOQ5Nyc87Vd+khdNw4ha0QRJKUVHsXWNoQJZmS6AKYjkZvbWPw@mail.gmail.com>
Message-ID: <CAFLer81k=T-ukKKDFb5f7y1Ay4WFmmf0zzeORLom58X6TkMG4w@mail.gmail.com>

On Sun, Mar 5, 2017 at 2:50 PM, Michael Lawrence
<lawrence.michael at gene.com> wrote:
>
>
> On Sat, Mar 4, 2017 at 12:36 PM, Da Zheng <zhengda1936 at gmail.com> wrote:
>>
>> In my case, I create a new type of matrices and override matrix
>> operations in R for these matrices.
>> My goal is to make the system as transparent as possible, which means
>> my system should execute the existing R code without modification.
>> The problem is that when data is in my own vectors or matrices, "if"
>> or "while" can't access their values unless we explicitly convert them
>> into R objects. But this means users need to modify the existing code.
>> So I hope I can override "if", "while", etc to access data in my own
>> vectors and matrices directly.
>> Does this sound reasonable?
>>
>
> Would you really need the alternate representation for scalar logicals?
>
> I can see a case in the deferred evaluation context, although it would be
> problematic wrt side effects unless the deferral is complete.
This is exactly why I want to use my own matrix objects and redefine
"if" for the matrices. In my framework, all matrices are read-only, so
there isn't side effect.

Best,
Da
>
>
>
>>
>> Best,
>> Da
>>
>> On Sat, Mar 4, 2017 at 3:22 PM, Michael Lawrence
>> <lawrence.michael at gene.com> wrote:
>> > I'm curious as to precisely why someone would want to do this.
>> >
>> > On Sat, Mar 4, 2017 at 11:49 AM, Da Zheng <zhengda1936 at gmail.com> wrote:
>> >>
>> >> I'm just curious. Why making "if" generic is even more dangerous?
>> >>
>> >> Best,
>> >> Da
>> >>
>> >> On Sat, Mar 4, 2017 at 1:22 PM, G?bor Cs?rdi <csardi.gabor at gmail.com>
>> >> wrote:
>> >> > `!` is a generic, `if` is not. You can define an `if` that is
>> >> > generic,
>> >> > but this might be even more dangerous....
>> >> >
>> >> > ? `if` <- function(a, b, c) UseMethod("if")
>> >> > ? `if.default` <- function(a,b,c) base::`if`(a, b, c)
>> >> > ? `if.foo` <- function(a, b, c) FALSE
>> >> > ? a <- structure(42, class = "foo")
>> >> >
>> >> > ? if (a) TRUE else FALSE
>> >> > [1] FALSE
>> >> >
>> >> > ? if (1) TRUE else FALSE
>> >> > [1] TRUE
>> >> >
>> >> > Gabor
>> >> >
>> >> > On Sat, Mar 4, 2017 at 5:47 PM, Da Zheng <zhengda1936 at gmail.com>
>> >> > wrote:
>> >> >> Thanks.
>> >> >> Can I override it for a specific class?
>> >> >> I can do that for operators such as "!". For example, "!.fm" works
>> >> >> for
>> >> >> objects of the class "fm".
>> >> >> It seems I can't do the same for "if".
>> >> >>
>> >> >> Best,
>> >> >> Da
>> >> >>
>> >> >> On Sat, Mar 4, 2017 at 12:41 PM, G?bor Cs?rdi
>> >> >> <csardi.gabor at gmail.com>
>> >> >> wrote:
>> >> >>> You can. Perhaps needless to say, be careful with this.
>> >> >>>
>> >> >>> ? `if` <- function(...) FALSE
>> >> >>> ? if (TRUE) TRUE else FALSE
>> >> >>> [1] FALSE
>> >> >>>
>> >> >>> G.
>> >> >>>
>> >> >>> On Sat, Mar 4, 2017 at 5:36 PM, Da Zheng <zhengda1936 at gmail.com>
>> >> >>> wrote:
>> >> >>>> Hello,
>> >> >>>>
>> >> >>>> I heard we can override almost everything in R. Is it possible to
>> >> >>>> override "if" keyword in R to evaluate my own object instead of a
>> >> >>>> logical value?
>> >> >>>>
>> >> >>>> Thanks,
>> >> >>>> Da
>> >> >>>>
>> >> >>>> ______________________________________________
>> >> >>>> R-devel at r-project.org mailing list
>> >> >>>> https://stat.ethz.ch/mailman/listinfo/r-devel
>> >>
>> >> ______________________________________________
>> >> R-devel at r-project.org mailing list
>> >> https://stat.ethz.ch/mailman/listinfo/r-devel
>> >
>> >
>
>



[Rd] can we override "if" in R?
Da Zheng