Issue #7336 has been updated by matz (Yukihiro Matsumoto).


It changes "the taste of the language". Macro will give you flexibility and freedom.
But it may hinder "reliability" to the syntax, and will gradually destroy the attractiveness of the language.
It might be imaginary fear of mine.  But I don't think I have to prove it, as the original author of the language.

I personally don't think the need for "something like macro" right now, but I welcome new proposals.

Matz.

----------------------------------------
Feature #7336: Flexiable OPerator Precedence
https://bugs.ruby-lang.org/issues/7336#change-32831

Author: trans (Thomas Sawyer)
Status: Rejected
Priority: Normal
Assignee: 
Category: core
Target version: next minor


=begin
If Ruby classes could provide some means for redefining operator precedence, it would provide the flexibility useful to some DSL use-cases.

My particular application, for instance, is in an SI units system gem that could use `^` to mean power of the unit (e.g. 1.meter^3 would mean cubic meters). But to do that right the operator needs a higher precedence. I don't expect it to be something commonly used, obviously, but it certain use cases like mine it is practically essential.

I first suggested that (({#^})) be given a higher precedence and XOR get another operator in #6678. I was not surprised that it was rejected, but I figured it was the proper first step, before proposing this much broader feature request.

As for notation, I suppose the simplest means if to create class method that can move the precedence to a position relative to another, e.g.

    class Unit
      precedence :^, :**

Which is to say, move (({#^})) operator to a precedence above (({#**})).
=end



-- 
http://bugs.ruby-lang.org/