Custom binary operators

John Colvin john.loughran.colvin at gmail.com
Sat Dec 28 13:08:45 PST 2013


On Saturday, 28 December 2013 at 20:06:46 UTC, H. S. Teoh wrote:
> On Sat, Dec 28, 2013 at 07:35:00PM +0100, Joseph Rushton 
> Wakeling wrote:
>> On 28/12/13 18:50, John Colvin wrote:
>> >how about:
>> >
>> >a.elementWise * b
>> >
>> >where a.elementWise returns a wrapper struct around a that 
>> >implements
>> >elementwise arithmetic as opposed to the normal arithmetic.
>> >
>> >The operators would return instances of Matrix, not 
>> >elementWise, to
>> >avoid accidentally spilling a Matrix.ElementWise struct in to 
>> >ensuing
>> >code unintentionally. With a shorter alias it's rather neat.
>> >
>> >auto e = ((a .EW* b) .EW/ c ) * d;
>> 
>> That's a rather cool idea -- thanks for that! :-)
>> 
>> That said, I think it'd be difficult to really justify it as a
>> pattern for general use.  If you're doing mathematical work à 
>> la
>> MATLAB, you want a proper operator, not a trick which lets you 
>> sort
>> of write something that looks a little like one.  I'm a little
>> disappointed there's no ready way to do this :-(
>
> The other way is to use a compile-time DSL, which lets you 
> implement
> whatever operators you want in whatever syntax you fancy.
>
>
> T

Yeah. To risk being glib, if you want a domain specific language, 
use a domain specific language.

Then again, including some convenient abstraction for some common 
tasks while remaining within the main language is nice.


More information about the Digitalmars-d-learn mailing list