Phil Tomson wrote: > > Indeed. I understand exactly, but I suspect there are about 3 of us on > this list who have done hardware design (or used HDLs). I think perhaps > we're having a hard time conveying what we're trying to do and how a ':=' > operator could really help. Maybe we need to come up with a more general use > for a ':=' operator that everyone can relate to. I'm sure some examples exist. > I have an simple but nice example which was found when I prototyped crypto algorithms. Modular mathematics are common operations in public key encryption. Say that "Zx" is a Class represents the group of integer [0,x-1], whose math ops are modular reduction to x after do integer operation. e.g. class Z31 # should implemented dynamically, just for sample Modulus=31 def initialize(v=0) @value=v.to_i % Modulus end def to_i @value end def :=(v) @value=v.to_i % Modulus end def +(v) (@value+v) % Modulus end # .. some methods end c = Z31.new #=> 0 a = Z31.new(120) #=> 27 b = Z31.new(a) #=> 27 c := a #=> 27 c := a + b #=> 31 c := 100 #=> 7 Without ":=", you have to write "c=Z31.new(100)" whenever you want assign an integer to a variable and Z31.+() must return a new Z31 object (I don't know whether this will affect the performance when deals with Bignum). But we need no new objects indeed! With ":=", you can write crypto algorithm programs in very clear and natural way, which are just pseudo-codes in eyes of the person who don't know ruby.