2009/1/24 Olex P <span dir="ltr">&lt;<a href="mailto:hoknamahn@gmail.com">hoknamahn@gmail.com</a>&gt;</span><br><div class="gmail_quote"><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
But you know it doesn&#39;t make too much sense because I also have to define addition Scalar + Vector (that means construct vector from scalar and add a vector), Vector + Scalar and so on. And as we are not able to overload operations in C++ like way we have to create several different operations even if their meaning is pretty close.</blockquote>
<div><br>Well, yeah, but their meaning isn&#39;t <i>the same</i>, so we don&#39;t give them the same name.<br><br>For vectors, putting a carat (or other signifier like a dot) on the side of the operation which has the vector is relatively common practice.<br>
<br>Scalar +^ Vector<br>Vector ^+^ Vector<br><br>And so on.<br><br>And also, I wonder, what are you going and adding scalars to vectors for!? &nbsp; (I&#39;ve heard of multiplying scalars by vectors -- that&#39;s in the definition of a vector space, but adding...?)<br>
<br>Oh, instead of overloading a million operations that just work component-wise on vectors the way C++ guys do it, you can just define a higher-order function:<br><br>vmap :: (Vector v) =&gt; (Double -&gt; Double) -&gt; v -&gt; v<br>
<br>Or however it works out in your situation.&nbsp; Then you can reserve those precious symbols for things that are actually vectory, like inner products.<br><br>Luke<br></div></div>