<html><head><style>body{font-family:Helvetica,Arial;font-size:13px}</style></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px; color: rgba(0,0,0,1.0); margin: 0px; line-height: auto;"><p style="margin: 0px; font-size: 12px; line-height: normal; font-family: Helvetica; color: rgb(69, 69, 69);">Personally I'm fine with the way it is right now, but I do miss enforced labels at some point. At least it would be 'nice to have' feature like we already have @autoclosure or @noescape to enforce some specific behaviour.</p>
<p style="margin: 0px; font-size: 12px; line-height: normal; font-family: Helvetica; color: rgb(69, 69, 69); min-height: 14px;"><br></p>
<p style="margin: 0px; font-size: 12px; line-height: normal; font-family: Helvetica; color: rgb(69, 69, 69);">I started the discussion about enforcing argument labels on tuples but with your feedback I totally see the point why this shouldn’t be something backed inside the language by default.</p>
<p style="margin: 0px; font-size: 12px; line-height: normal; font-family: Helvetica; color: rgb(69, 69, 69); min-height: 14px;"><br></p>
<p style="margin: 0px; font-size: 12px; line-height: normal; font-family: Helvetica; color: rgb(69, 69, 69);">Optional way to enforce the usage of correct/strict/explicit labels could provide better readability from my point of view.</p>
<p style="margin: 0px; font-size: 12px; line-height: normal; font-family: Helvetica; color: rgb(69, 69, 69); min-height: 14px;"><br></p>
<p style="margin: 0px; font-size: 12px; line-height: normal; font-family: Helvetica; color: rgb(69, 69, 69);">Remember the idea of cascading methods/initializer? For class types it’s almost possible to build that feature by yourself, but there is one problem that was discussed back then. What do we use inside the trailing closure to access the instance. </p>
<p style="margin: 0px; font-size: 12px; line-height: normal; font-family: Helvetica; color: rgb(69, 69, 69);">Sure we could give it a custom name or just use `$0`.</p>
<p style="margin: 0px; font-size: 12px; line-height: normal; font-family: Helvetica; color: rgb(69, 69, 69); min-height: 14px;"><br></p>
<p style="margin: 0px; font-size: 12px; line-height: normal; font-family: Helvetica; color: rgb(69, 69, 69);">```swift</p>
<p style="margin: 0px; font-size: 12px; line-height: normal; font-family: Helvetica; color: rgb(69, 69, 69);">let instance = ClassA() {</p>
<p style="margin: 0px; font-size: 12px; line-height: normal; font-family: Helvetica; color: rgb(69, 69, 69); min-height: 14px;"><br></p>
<p style="margin: 0px; font-size: 12px; line-height: normal; font-family: Helvetica; color: rgb(69, 69, 69);"> // customName in</p>
<p style="margin: 0px; font-size: 12px; line-height: normal; font-family: Helvetica; color: rgb(69, 69, 69);"> // or $0</p>
<p style="margin: 0px; font-size: 12px; line-height: normal; font-family: Helvetica; color: rgb(69, 69, 69);">}</p>
<p style="margin: 0px; font-size: 12px; line-height: normal; font-family: Helvetica; color: rgb(69, 69, 69); min-height: 14px;"><br></p>
<p style="margin: 0px; font-size: 12px; line-height: normal; font-family: Helvetica; color: rgb(69, 69, 69);">// imagine we had something optional like</p>
<p style="margin: 0px; font-size: 12px; line-height: normal; font-family: Helvetica; color: rgb(69, 69, 69);">class ClassB {</p>
<p style="margin: 0px; font-size: 12px; line-height: normal; font-family: Helvetica; color: rgb(69, 69, 69); min-height: 14px;"><br></p>
<p style="margin: 0px; font-size: 12px; line-height: normal; font-family: Helvetica; color: rgb(69, 69, 69);"> @require_explicit_label_usage</p>
<p style="margin: 0px; font-size: 12px; line-height: normal; font-family: Helvetica; color: rgb(69, 69, 69);"> init(closure: (this: ClassB) -> Void) {</p><p style="margin: 0px; font-size: 12px; line-height: normal; font-family: Helvetica; color: rgb(69, 69, 69);"><br></p>
<p style="margin: 0px; font-size: 12px; line-height: normal; font-family: Helvetica; color: rgb(69, 69, 69);"> closure(this: self)</p>
<p style="margin: 0px; font-size: 12px; line-height: normal; font-family: Helvetica; color: rgb(69, 69, 69);"> }</p>
<p style="margin: 0px; font-size: 12px; line-height: normal; font-family: Helvetica; color: rgb(69, 69, 69);"> func foo() {}</p>
<p style="margin: 0px; font-size: 12px; line-height: normal; font-family: Helvetica; color: rgb(69, 69, 69);">}</p>
<p style="margin: 0px; font-size: 12px; line-height: normal; font-family: Helvetica; color: rgb(69, 69, 69); min-height: 14px;"><br></p>
<p style="margin: 0px; font-size: 12px; line-height: normal; font-family: Helvetica; color: rgb(69, 69, 69);">// now we could use it like</p>
<p style="margin: 0px; font-size: 12px; line-height: normal; font-family: Helvetica; color: rgb(69, 69, 69); min-height: 14px;"><br></p>
<p style="margin: 0px; font-size: 12px; line-height: normal; font-family: Helvetica; color: rgb(69, 69, 69);">let b = ClassB() { this in // can be omitted due the use of @require_explicit_label_usage</p><p style="margin: 0px; font-size: 12px; line-height: normal; font-family: Helvetica; color: rgb(69, 69, 69);"><br></p>
<p style="margin: 0px; font-size: 12px; line-height: normal; font-family: Helvetica; color: rgb(69, 69, 69);"> this.foo()</p>
<p style="margin: 0px; font-size: 12px; line-height: normal; font-family: Helvetica; color: rgb(69, 69, 69);">}</p>
<p style="margin: 0px; font-size: 12px; line-height: normal; font-family: Helvetica; color: rgb(69, 69, 69); min-height: 14px;"><br></p>
<p style="margin: 0px; font-size: 12px; line-height: normal; font-family: Helvetica; color: rgb(69, 69, 69);">// I'll use ++ operator just for the example here</p>
<p style="margin: 0px; font-size: 12px; line-height: normal; font-family: Helvetica; color: rgb(69, 69, 69); min-height: 14px;"><br></p>
<p style="margin: 0px; font-size: 12px; line-height: normal; font-family: Helvetica; color: rgb(69, 69, 69);">@require_explicit_label_usage</p>
<p style="margin: 0px; font-size: 12px; line-height: normal; font-family: Helvetica; color: rgb(69, 69, 69);">prefix func ++ (tuple: (exp: Int, earned: Int)) -> Int {</p><p style="margin: 0px; font-size: 12px; line-height: normal; font-family: Helvetica; color: rgb(69, 69, 69);"><br></p>
<p style="margin: 0px; font-size: 12px; line-height: normal; font-family: Helvetica; color: rgb(69, 69, 69);"> return tuple.apples + tuple.amount</p>
<p style="margin: 0px; font-size: 12px; line-height: normal; font-family: Helvetica; color: rgb(69, 69, 69);">}</p>
<p style="margin: 0px; font-size: 12px; line-height: normal; font-family: Helvetica; color: rgb(69, 69, 69); min-height: 14px;"><br></p>
<p style="margin: 0px; font-size: 12px; line-height: normal; font-family: Helvetica; color: rgb(69, 69, 69);">// this operator will only overload when the right labeling is applied to the tuple</p>
<p style="margin: 0px; font-size: 12px; line-height: normal; font-family: Helvetica; color: rgb(69, 69, 69); min-height: 14px;"><br></p>
<p style="margin: 0px; font-size: 12px; line-height: normal; font-family: Helvetica; color: rgb(69, 69, 69);">++(exp: 10, earned: 5) // result would be 15</p>
<p style="margin: 0px; font-size: 12px; line-height: normal; font-family: Helvetica; color: rgb(69, 69, 69); min-height: 14px;"><br></p>
<p style="margin: 0px; font-size: 12px; line-height: normal; font-family: Helvetica; color: rgb(69, 69, 69);">// the operator wont work with</p>
<p style="margin: 0px; font-size: 12px; line-height: normal; font-family: Helvetica; color: rgb(69, 69, 69);">++(100, 50)</p>
<p style="margin: 0px; font-size: 12px; line-height: normal; font-family: Helvetica; color: rgb(69, 69, 69);">// give another dev this snippet and ask him what 100 and 50 means</p>
<p style="margin: 0px; font-size: 12px; line-height: normal; font-family: Helvetica; color: rgb(69, 69, 69); min-height: 14px;"><br></p>
<p style="margin: 0px; font-size: 12px; line-height: normal; font-family: Helvetica; color: rgb(69, 69, 69);">```</p>
<p style="margin: 0px; font-size: 12px; line-height: normal; font-family: Helvetica; color: rgb(69, 69, 69);">This example is very abstract but I'm sure you should get the point of the possible need of an optional label enforcement.</p>
<p style="margin: 0px; font-size: 12px; line-height: normal; font-family: Helvetica; color: rgb(69, 69, 69); min-height: 14px;"><br></p>
<p style="margin: 0px; font-size: 12px; line-height: normal; font-family: Helvetica; color: rgb(69, 69, 69);">By the way, why does Swift allow something like this anyway?</p>
<p style="margin: 0px; font-size: 12px; line-height: normal; font-family: Helvetica; color: rgb(69, 69, 69); min-height: 14px;"><br></p>
<p style="margin: 0px; font-size: 12px; line-height: normal; font-family: Helvetica; color: rgb(69, 69, 69);">var a = (a: 10) // is of type Int</p>
<p style="margin: 0px; font-size: 12px; line-height: normal; font-family: Helvetica; color: rgb(69, 69, 69); min-height: 14px;"><br></p>
<p style="margin: 0px; font-size: 12px; line-height: normal; font-family: Helvetica; color: rgb(69, 69, 69);">Where something like the next example is not allowed at all:</p>
<p style="margin: 0px; font-size: 12px; line-height: normal; font-family: Helvetica; color: rgb(69, 69, 69); min-height: 14px;"><br></p>
<p style="margin: 0px; font-size: 12px; line-height: normal; font-family: Helvetica; color: rgb(69, 69, 69);">var a: (a: Int) = (a: 10)</p><div><br></div></div> <br> <div id="bloop_sign_1461229905737581056" class="bloop_sign"><div>-- <br>Adrian Zubarev</div></div> <br><p class="airmail_on">Am 21. April 2016 bei 09:14:16, Haravikk via swift-evolution (<a href="mailto:swift-evolution@swift.org">swift-evolution@swift.org</a>) schrieb:</p> <blockquote type="cite" class="clean_bq"><span><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div></div><div>
<title></title>
<div class="">I think the important thing to remember is that the
label check is intended to prevent cases like this:</div>
<div class=""><br class=""></div>
<div class=""><font face="Monaco" class="">let a:(left:Int,
right:Int) = (1, 2)</font></div>
<div class=""><font face="Monaco" class="">var b:(right:Int,
left:Int) = a</font></div>
<div class=""><br class=""></div>
<div class="">While the two tuples are compatible by type, the
meaning of the values may differ due to the different labels; in
this case the values are represented in a different order that a
developer should have to explicitly reverse to ensure they aren’t
making a mistake, or they could represent radically different
concepts altogether.</div>
<div class=""><br class=""></div>
<div class="">It’s certainly annoying when the labels are only
different due to minor differences, but the compiler doesn’t know
that. So yeah, I think that in any case where there are external
labels that differ a warning should be raised; this comes down to
being able to later ignore types of warnings, which could avoid the
boiler-plate in future.</div>
<div class=""><br class=""></div>
<div class="">The alternative would be if we had some syntax for
mapping parameters more cleanly, for example:</div>
<div class=""><br class=""></div>
<div class=""><font face="Monaco" class="">hi(1, y: 2, fn: sum1
where left = lhs, right = rhs)</font></div>
<div class=""><br class=""></div>
<div class="">Or something along those lines anyway?</div>
<br class="">
<div>
<blockquote type="cite" class="">
<div class="">On 21 Apr 2016, at 06:18, David Owens II via
swift-evolution <<a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a>> wrote:</div>
<br class="Apple-interchange-newline">
<div class="">
<div style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">
<blockquote type="cite" class="">
<div class=""><br class="Apple-interchange-newline">
On Apr 20, 2016, at 4:47 PM, Chris Lattner <<a href="mailto:clattner@apple.com" class="">clattner@apple.com</a>>
wrote:</div>
<br class="Apple-interchange-newline">
<div class="">
<div class="" style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;">
On Apr 20, 2016, at 12:31 PM, David Owens II via swift-evolution
<<a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a>> wrote:
<div class="">
<blockquote type="cite" class="">
<div class="">
<div class="" style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;">
This is similar to another concern I raised with functions and
being able to essentially erase the function argument names and
apply two different named parameters just because their types
match.
<div class=""><br class=""></div>
<div class="">It seems reasonable to me that you can go from (x:
Int, y: Int) => (Int, Int). However, going from (x: Int, y: Int)
=> (a: Int, b: Int) feels somewhat odd. Yes, the types can
obviously slot in there fine, but how much importance do the labels
for the types bring to the table?</div>
<div class=""><br class=""></div>
<div class="">Similarly, should this (Int, Int) => (x: Int, y:
Int) be allowed through an implicit means? If so, then it's really
just an intermediate step for (x: Int, y: Int) => (a: Int, b:
Int) working.</div>
</div>
</div>
</blockquote>
<div class=""><br class=""></div>
<div class="">I completely agree, I think it makes sense to convert
from unlabeled to labeled (or back) but not from “labeled" to
"differently labeled”.</div>
<div class=""><br class=""></div>
<blockquote type="cite" class="">
<div class="">
<div class="" style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;">
<div class="">So what matters more, type signatures or label
names?</div>
<div class=""><br class=""></div>
<div class="">Here's an example:</div>
<div class=""><br class=""></div>
<blockquote class="" style="margin: 0px 0px 0px 40px; border: none; padding: 0px;">
<div class=""><font face="Menlo" class="">typealias Functor =
(left: Int, right: Int) -> Int</font></div>
<div class=""><font face="Menlo" class=""><br class=""></font></div>
<div class=""><font face="Menlo" class="">func hi(x: Int,
y: Int, fn: Functor) -> Int {</font></div>
<div class=""><font face="Menlo" class="">
return fn(left: x, right: y)</font></div>
<div class=""><font face="Menlo" class="">}</font></div>
<div class=""><font face="Menlo" class=""><br class=""></font></div>
<div class=""><font face="Menlo" class="">hi(1, y: 2, fn:
+)</font></div>
<div class=""><font face="Menlo" class="">hi(1, y: 2, fn:
*)</font></div>
</blockquote>
<div class=""><br class=""></div>
<div class="">If we say that the parameter names are indeed vital,
then the above code cannot work as the operators that match the
type signature are defined as: </div>
<div class=""><br class=""></div>
<blockquote class="" style="margin: 0px 0px 0px 40px; border: none; padding: 0px;">
<div class=""><font face="Menlo" class="">public func +(lhs: Int, rhs: Int)
-> Int</font></div>
</blockquote>
<div class=""><br class=""></div>
<div class="">Obviously, given a name to the parameter brings
clarity and can be self documenting, but if we want the above to
work while making names just as vital as the type signature, then
we need to declare `Functor` as such:</div>
<div class=""><br class=""></div>
<blockquote class="" style="margin: 0px 0px 0px 40px; border: none; padding: 0px;">
<div class="">
<div class=""><font face="Menlo" class="">typealias Functor =
(_ left: Int, _ right: Int) -> Int</font></div>
</div>
</blockquote>
<div class=""><br class=""></div>
<div class="">However, that's not even legal code today, and even
if it were, is that really better?</div>
</div>
</div>
</blockquote>
</div>
<br class="">
<div class="">I don’t think this follows, since operator parameters
are always unlabeled. I suspect we don’t reject it, but I’d
be in favor of rejecting:</div>
<div class=""><br class=""></div>
<div class="">func +(lhs<span class="Apple-converted-space"> </span><b class="">xyz</b>: Int,
rhs<span class="Apple-converted-space"> </span><b class="">abc</b>: Int) -> Int { }</div>
</div>
</div>
</blockquote>
<div class=""><br class=""></div>
</div>
<span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">So maybe I think about this incorrectly, but I always
think of any parameter without an explicit label to have one that
is equal to the parameter name. So these two functions signatures
would be equivalent:</span>
<div class="" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;">
<br class=""></div>
<blockquote class="" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; margin: 0px 0px 0px 40px; border: none; padding: 0px;">
<div class=""><font face="Menlo" class="">func sum1(lhs: Int, rhs:
Int) -> Int</font></div>
<div class="">
<div class=""><font face="Menlo" class="">func sum2(lhs lhs: Int,
rhs rhs: Int) -> Int</font></div>
</div>
<div class=""><font face="Menlo" class=""><br class=""></font></div>
</blockquote>
<span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">It’s only when you explicit “erase” the label where there
is none:</span>
<div class="" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;">
<br class=""></div>
<blockquote class="" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; margin: 0px 0px 0px 40px; border: none; padding: 0px;">
<div class="">
<div class=""><font face="Menlo" class="">func sum(_ lhs: Int, _
rhs: Int) -> Int</font></div>
</div>
<div class=""><font face="Menlo" class=""><br class=""></font></div>
</blockquote>
<div class="" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;">
<div class=""></div>
</div>
<div class="" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;">
So back to the example above, it’s still somewhat odd that all of
these are valid:</div>
<div class="" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;">
<br class=""></div>
<blockquote class="" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; margin: 0px 0px 0px 40px; border: none; padding: 0px;">
<font face="Menlo" class="">hi(1, y: 2, fn:
sum1)</font></blockquote>
<blockquote class="" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; margin: 0px 0px 0px 40px; border: none; padding: 0px;">
<span class="" style="font-family: Menlo;">hi(1, y: 2, fn:
sum2)</span></blockquote>
<blockquote class="" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; margin: 0px 0px 0px 40px; border: none; padding: 0px;">
<span class="" style="font-family: Menlo;">hi(1, y: 2, fn: sum)
// makes the most sense, no label to labeled
promotion</span></blockquote>
<div class="" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;">
<font face="Menlo" class=""><br class=""></font></div>
<div class="" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;">
But if we did reject the differently labeled version, that would
mean that we would need to declare the `Functor` above as:</div>
<div class="" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;">
<br class=""></div>
<div class="" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;">
<blockquote class="" style="margin: 0px 0px 0px 40px; border: none; padding: 0px;"><font face="Menlo" class="">typealias Functor = (Int, Int) ->
Int</font></blockquote>
</div>
<div class="" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;">
<br class=""></div>
<div class="" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;">
Is that better? I’m not terribly convinced that it is.</div>
<div class="" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;">
<br class=""></div>
<div class="" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;">
If `Functor` keeps the labels, I suspect it would just lead to
additional boiler-plate code that would look like:</div>
<div class="" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;">
<br class=""></div>
<div class="" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;">
<div class="">
<blockquote class="" style="margin: 0px 0px 0px 40px; border: none; padding: 0px;"><font face="Menlo" class="">typealias Functor = (left: Int, right: Int) ->
Int</font></blockquote>
</div>
<blockquote class="" style="margin: 0px 0px 0px 40px; border: none; padding: 0px;"><font face="Menlo" class=""><br class=""></font></blockquote>
<blockquote class="" style="margin: 0px 0px 0px 40px; border: none; padding: 0px;"><font face="Menlo" class="">hi(1, y: 2, fn: { left, right in sum1(lhs: left,
rhs: right) })</font></blockquote>
</div>
<div class="" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;">
<br class=""></div>
<div class="" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;">
While it does seem technically correct, is that really the kind of
code we want in Swift? </div>
<div class="" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;">
<br class=""></div>
<div class="" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;">
-David</div>
<span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">_______________________________________________</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">
<span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">swift-evolution mailing list</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">
<a href="mailto:swift-evolution@swift.org" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">swift-evolution@swift.org</a><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">
<a href="https://lists.swift.org/mailman/listinfo/swift-evolution" style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">https://lists.swift.org/mailman/listinfo/swift-evolution</a></div>
</blockquote>
</div>
<br class="">
_______________________________________________<br>swift-evolution mailing list<br>swift-evolution@swift.org<br>https://lists.swift.org/mailman/listinfo/swift-evolution<br></div></div></span></blockquote></body></html>