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.