<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
"http://www.w3.org/TR/REC-html40/loose.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<title></title>
</head>
<body style="font-family:Arial;font-size:14px">
<p>Hi Matthew & Juan,<br>
<br>
Thank you for the kind words and for the feedback! I totally agree in what you are suggesting, so I will just provide a little of context on why it was presented that way.<br>
<br>
First of all, when talking about type arithmetic I suggest to refer to the latest presentation for the summit rather than from the Tensor Typing Meetings (https://docs.google.com/presentation/d/1NZzZfbUCXi78LDDe8C3hAaK9on8ZiX3Z2k4BlZXwsJ8/edit). Here I intentionally refer to the +,-,*,// syntax rather than the Add[] one. Moreover, I also write 1 + A rather than Literal[1] + A, assuming that we could write a PEP for enabling this behavior if needed, and as Matthew said, it seems feasible based on what was said in the summit.<br>
<br>
So yes, we totally agree that is important to make the syntax as simple as possible, especially because expressions can get quite complicated (e.g. convolutions). Nonetheless, I will also answer the question of "Why in the presentation of the Tensor Typing meeting you used the Prefix operators (Add) and did not support directly Subtract?"<br>
The answer is that the goal was to show what was tecnically possible to achieve with Type Arithmetic, and syntax does not matter in that regard. Since we knew that the syntax could change any point later on we just went for the prefix one after a quick 30 minutes discussion in Pyre. However, the implementation for doing A+B instead of Add[A,B] would have been the same complex, and can be changed with a few lines of code.<br>
About Subtract, it was once again, because we did not need a custom Subtract operator to show what type arithmetic can do. However, supporting it would have been a matter of a few lines in Pyre, I even had a PR ready but we decided to make as few changes as possible since it would not add any new functionality. After all, the idea was how to bring a big feature like Type Arithmetic with as few changes to the language as possible.<br>
<br>
Best,<br>
Alfonso.</p>
<p><br>
Quoting Matthew Rahtz <<a href="mailto:mrahtz@google.com">mrahtz@google.com</a>>:</p>
<blockquote style="border-left:2px solid blue;margin-left:2px;padding-left:12px;" type="cite">
<div dir="ltr">Hi Juan
<div> </div>
<div>Thanks for the kind words!</div>
<div> </div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<p>why isn’t there a Subtract operator?</p>
</blockquote>
<div> </div>
<div>I <i>think</i> this is just because the implementation in Pyre is still an early prototype. Alfonso?</div>
<div> </div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<p>is there a prospect for using actual operators and actual literals here?</p>
</blockquote>
<div> </div>
<div>That's a really good question. We're optimistic that actual literals should be possible - we assumed there was some subtle reason we'd have to use Literal, but when we briefly talked about it at PyCon, Guido was like "Nope, you should just write a PEP for that". As for actual operators - I can't think of any <i>technical</i> reason this shouldn't be possible - when it comes time to write a PEP for type arithmetic it's definitely something we should propose. Alfonso, any thoughts?</div>
<div> </div>
<div>Best,</div>
<div>Matthew</div>
</div>
<br>
<div class="gmail_quote">
<div class="gmail_attr" dir="ltr">On Mon, 14 Jun 2021 at 03:51, Juan Nunez-Iglesias <<a href="mailto:jni@fastmail.com">jni@fastmail.com</a>> wrote:</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div style="overflow-wrap: break-word;">Thank you so much Matthew, Pradeep, and everyone else helping with this effort!
<div> </div>
<div>And thanks Matthew for sharing the slides — very informative! I’ve asked Sebastian for the recording but in the meantime I thought I’d ask a couple of questions about the syntax:</div>
<div> </div>
<div>* why isn’t there a Subtract operator? It seems that Subtract[A, B] is much more readable than Add[A, Multiply[Literal[-1], B]]?</div>
<div>* is there a prospect for using actual operators and actual literals here? I think that a lot of reticence about Python typing comes from the annotations being so difficult to read. There’s been some great improvements recently with “Optional[Tuple[Union[Float, Int]]]” becoming “tuple[float | int] | None”, and I hope we can leapfrog the awkward phase with this tensor typing stuff. Again, A - B is much more readable again than Subtract[A, B]. And B-2 is much more readable than Add[B, Literal[-2]].</div>
<div> </div>
<div>Other than that, love the work, thank you again!</div>
<div> </div>
<div>Juan.</div>
<div>
<div><br>
<blockquote type="cite">
<div>On 11 Jun 2021, at 5:08 am, Matthew Rahtz <<a href="mailto:mrahtz@google.com" target="_blank">mrahtz@google.com</a>> wrote:</div>
<br>
<div>
<div dir="ltr">Some links I promised to send around:
<div>
<ul>
<li><a href="https://github.com/deepmind/tensor_annotations" target="_blank">https://github.com/deepmind/tensor_annotations</a> which has a bunch of experimental shape-aware stubs for TensorFlow and JAX using 'semantic' axis labels</li>
<li><a href="https://github.com/pradeep90/pytorch_examples" target="_blank">https://github.com/pradeep90/pytorch_examples</a> ditto for TensorFlow and PyTorch using value-based axis labels</li>
<li><a href="https://arxiv.org/pdf/2102.13254.pdf" target="_blank">https://arxiv.org/pdf/2102.13254.pdf</a> Similar work in TensorFlow for Swift</li>
<li><a href="https://docs.google.com/presentation/d/1kLS-bz1ZmJIFizZExkm8N9jqAj2oOJzTmUaL8INGefc/edit?usp=sharing&resourcekey=0-eFDyGvcEeeHzF62x6Cwl6Q" target="_blank">Slides</a> for our presentation</li>
<li><a href="https://docs.google.com/document/d/1oaG0V2ZE5BRDjd9N-Tr1N0IKGwZQcraIlZ0N8ayqVg8/edit" target="_blank">Tensor typing meeting details</a></li>
</ul>
<div>Thanks again, everyone!</div>
</div>
</div>
<br>
<div class="gmail_quote">
<div class="gmail_attr" dir="ltr">On Wed, 9 Jun 2021 at 22:28, Sebastian Berg <<a href="mailto:sebastian@sipsolutions.net" target="_blank">sebastian@sipsolutions.net</a>> wrote:</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<p>On Tue, 2021-06-08 at 11:40 -0700, Stefan van der Walt wrote:<br>
> On Tue, Jun 8, 2021, at 03:23, Juan Nunez-Iglesias wrote:<br>
> > Hello! Any chance this could be recorded for those of us in useless<br>
> > time zones? 😂<br>
><br>
> I added a note to the agenda; we'll ask the speakers and record if<br>
> they don't mind.<br>
<br>
<br>
We have made a recording, but I did not plan on making it available<br>
publicly.  Please contact me directly if you are interested.<br>
<br>
Cheers,<br>
<br>
Sebastian<br>
<br>
<br>
> Stéfan<br>
> _______________________________________________<br>
> NumPy-Discussion mailing list<br>
> <a href="mailto:NumPy-Discussion@python.org" target="_blank">NumPy-Discussion@python.org</a><br>
> <a href="https://mail.python.org/mailman/listinfo/numpy-discussion" rel="noreferrer" target="_blank">https://mail.python.org/mailman/listinfo/numpy-discussion</a><br>
<br>
<br>
_______________________________________________<br>
NumPy-Discussion mailing list<br>
<a href="mailto:NumPy-Discussion@python.org" target="_blank">NumPy-Discussion@python.org</a><br>
<a href="https://mail.python.org/mailman/listinfo/numpy-discussion" rel="noreferrer" target="_blank">https://mail.python.org/mailman/listinfo/numpy-discussion</a></p>
</blockquote>
</div>
_______________________________________________<br>
NumPy-Discussion mailing list<br>
<a href="mailto:NumPy-Discussion@python.org" target="_blank">NumPy-Discussion@python.org</a><br>
<a href="https://mail.python.org/mailman/listinfo/numpy-discussion" target="_blank">https://mail.python.org/mailman/listinfo/numpy-discussion</a></div>
</blockquote>
</div>
</div>
</div>
_______________________________________________<br>
NumPy-Discussion mailing list<br>
<a href="mailto:NumPy-Discussion@python.org" target="_blank">NumPy-Discussion@python.org</a><br>
<a href="https://mail.python.org/mailman/listinfo/numpy-discussion" rel="noreferrer" target="_blank">https://mail.python.org/mailman/listinfo/numpy-discussion</a></blockquote>
</div>
</blockquote>
<p><br>
<br></p>
</body>
</html>