<div dir="ltr">Don, have you considered making your Number type FloatLiteralConvertible? This would allow you not just to <b>let number: Number = 4.9</b>, but also pass in 4.9 to a function that expected a <b>Number</b>. It would not let you set Number variables to be equal to other variables of type Float, it seems your main use case here is literals anyway.<div><br></div><div><a href="http://swiftdoc.org/v2.0/protocol/FloatLiteralConvertible/">http://swiftdoc.org/v2.0/protocol/FloatLiteralConvertible/</a><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Sun, Dec 6, 2015 at 9:26 AM, Don Wills via swift-evolution <span dir="ltr">&lt;<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div>
 Silvan,
</div>
<div>
 <br>
</div>Yes, I understand the concern you raise.  I too have held that general opinion of overloading operators in other languages for many years.  That said, overloading arithmetic and other operators causes the same opportunity for abuse.  For example, overloading + for integers to do something different (like rounding instead of truncation) would make maintenance of existing programs into a giant guessing game.
<div>
 <br>
</div>
<div>
 That said, once the cat is out of the bag to overload operators, I don&#39;t see how adding support for = makes things any worse.
</div>
<div>
 <br>
</div>
<div>
 FYI, the reason for my suggestion is to add support for fixed decimal arithmetic just like that available in COBOL.  Yeh I can hear the groans now.  However, for business applications, fixed decimal arithmetic is a basic feature that has been tossed away in new languages by language designers who don&#39;t actually labor in the trenches.  I&#39;ve built a simple class to do just that - here is some sample code that uses my Number class that gives an idea of what the code does:
</div>
<div>
 <br>
</div>
<div>
 var amount = Number(left: 6, right: 2);
</div>
<div>
 var result = Number(left: 9, right: 2);
</div>
<div>
 amount &lt;- 3.9;
</div>
<div>
 amount += 1;
</div>
<div>
 result &lt;- amount * 4;
</div>
<div>
 print(result)
</div>
<div>
 <br>
</div>
<div>
 Note that &lt;- is the assignment operator.  I am sure all would agree that = is superior in this situation.  Such code would be far more readable and the Number values would act just like and interoperate with Float and Int in all regards *except* that currently the = operator is not available for assignment.
</div>
<div>
 <br>
</div>
<div>
 Don Wills
</div>
<div>
 <br>
</div>
<div>
 PS.  FWIW, the  IEEE 754-2008 d128 alternative that Chris Lattner mentioned to me is inferior to the kind of support for fixed decimal arithmetic that I believe would help make Swift superior to C# for business applications.
</div>
<div>
 <br>
</div>
<div></div>
<div>
 <br>
 <blockquote type="cite">
  <div>
   On Dec 6, 2015, at 6:58 AM, Silvan Mosberger &lt;
   <a href="mailto:kametrixom@icloud.com" target="_blank">kametrixom@icloud.com</a>&gt; wrote:
  </div>
  <br>
  <div>
   <div style="word-wrap:break-word">
    <div>
     Hi Don
    </div>
    <div>
     <br>
    </div>
    <div>
     I think this is a terrible idea! Imagine what you’d be able to do with that:
    </div>
    <div>
     <br>
    </div>
    <div>
     <div style="margin:0px;font-size:18px;line-height:normal;font-family:Menlo">
      <span style="color:#35568a">let</span> x : 
      <span style="color:#c35900">String</span> = 
      <span style="color:#35568a">3</span>
     </div>
    </div>
    <div>
     <br>
    </div>
    <div>
     This would lead to the same problems already discussed with implicit initialisers: 
     <a href="https://lists.swift.org/pipermail/swift-evolution/Week-of-Mon-20151130/000531.html" target="_blank">https://lists.swift.org/pipermail/swift-evolution/Week-of-Mon-20151130/000531.html</a>, just worse. Also assignment is something more fundamental than other operators, I doubt it’s even possible to do that.
    </div><div><div class="h5">
    <br>
    <div>
     <blockquote type="cite">
      <div>
       On 06 Dec 2015, at 14:44, Don Wills via swift-evolution &lt;
       <a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>&gt; wrote:
      </div>
      <br>
      <div>
       <div>
        The ability to overload operators is very useful.  However, that utility is diminished without the ability to overload the simple assignment operator ( = ).  I vaguely recall reading somewhere that there is a reason for this having to do with syntax ambiguity.  Can this problem be solved so that = can be overloaded?
        <br>
        <br>Don Wills
        <br>_______________________________________________
        <br>swift-evolution mailing list
        <br>
        <a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>
        <br>
        <a href="https://lists.swift.org/mailman/listinfo/swift-evolution" target="_blank">https://lists.swift.org/mailman/listinfo/swift-evolution</a>
        <br>
       </div>
      </div>
     </blockquote>
    </div>
    <br>
   </div></div></div>
  </div>
 </blockquote>
</div>
<br>   
<div style="margin-top:10px;font-size:12px;font-family:Helvetica,Arial;color:#999">
 Untracked with 
 <a style="color:#999" href="https://trackbuster.com/?sig" target="_blank">Trackbuster</a>
</div><br>_______________________________________________<br>
swift-evolution mailing list<br>
<a href="mailto:swift-evolution@swift.org">swift-evolution@swift.org</a><br>
<a href="https://lists.swift.org/mailman/listinfo/swift-evolution" rel="noreferrer" target="_blank">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br>
<br></blockquote></div><br></div>