From: "Louis A. Mamakos" Date: 2000-09-26T11:12:37+09:00 Subject: [ruby-talk:5119] Re: Crazy idea? infix method calls > > > |But I still think, as a special case, it woudl be a good idea if > > | x in y > > |meant the same as > > | y.include? x > > | > > |It is "pretty" (IMO) in the same way that the for loop is pretty... > > > > It's possible, because 'in' is the reserved word, so that `x in y' is > > not valid now. Let us discuss about name, behavior, and > > least-surprise-ness. ;-) > > > > Certainly let's discuss it then... ;) > > I propose that the (pseudo) operator "in" (named as such) should > result in a call to include? "under the hood," i.e., x in y or > any arbitrary pair of objects x and y, should behave exactly the > same as y.include? x, returning true or false and making possible > syntax like: if node in binary_tree then ... > > Now, is there any hidden catch, any unforeseen complication that > I am unaware of? > > Since it mimics an operator, it will have to have a precedence. > That's all that comes to my mind. If I had had more sleep last > night, I might have an opinion about high versus low... :) > Presumably we could fix it so that for all operaors op1 and op2, > a op1 b in c op2 d would mean the same as the expression > a op1 c.include?(b) op2 d. > > Does anyone but me like this proposal at all? > If most of the motivation to pursue this is to have a more "natural" expression for set membership (e.g., an "in" infix operator), then could you just use a method called "contains" instead which wouldn't require another mechanism. e.g., y.contains x which I think reads as naturally as "x in y". I just worry that more syntactic sugar which makes figuring out precedence and evaluation order may not really help in the end. louie