<div dir="ltr">Thanks for writing this up, Erica! +1 to method cascading and to Lukas's idea of moving the `with` keyword<b> </b>to after the = sign, so that `<font face="monospace, monospace">with thing { ... }</font>`<b> </b>just becomes an expression.<div><br></div><div>Some q's:</div><div><br></div><div>1. Have we thought about how the syntax would work with initializers that take closures as their last arguments? Would you just no longer use trailing closure syntax with them?</div><div><br></div><div>2. Erica, I'm curious to hear your thoughts on using Dart's .. style of method cascading, which is mentioned in the proposal but not seriously considered. It seems it would avoid the difficulties described in the proposal (about what to do when names are both in outer scope and members of newly bound self).</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Sun, Dec 6, 2015 at 10:47 PM, Lukas Stabe via swift-evolution <span dir="ltr"><<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div>
The proposal sounds like a good start to me. I really like the idea of this feature (and have in the past in obj-c used the compound-statement-expression gnu extension to achieve similar-looking code).
</div>
<div>
<br>
</div>
<div>
One thing I found myself thinking about is: How would `with` work when used with optionals (think failable initializers)? Would the block just not be executed (making it similar to mapping over an optional)? That would sound like a big plus for this feature, since you wouldn’t need to either use optional chaining or check if the value was nil while doing further setup.
</div>
<div>
<br>
</div>
<div>
Another question for me is this: Say I want to create an instance of a class, configure it, and then assign it to a property on some other object (it can’t be assigned before it’s fully configured). Could we adapt this proposal to handle that case, too (e.g. `with obj.prop = MyClass() { … }`)? I think it might feel more natural to move the `with` after the assignment (e.g. `obj.prop = with MyClass() { … }, so it could be used not just to assign to a local variable but in any context you want to use it, including method calls etc.
</div>
<div>
<br>
</div>
<div>
Lukas
</div><div class="HOEnZb"><div class="h5">
<br>
<div>
<blockquote type="cite">
<div>
On 07 Dec 2015, at 04:27, Erica Sadun via swift-evolution <
<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>> wrote:
</div>
<br>
<div>
<div style="word-wrap:break-word">
<div>
Could you take a peek please at my updated writeup for a potential proposal here:
<a href="https://gist.github.com/erica/eb32feb22ba99629285a" target="_blank">https://gist.github.com/erica/eb32feb22ba99629285a</a>
</div>
<div>
<br>
</div>
<div>
Thanks, -- E
</div>
<div>
<br>
</div>
<br>
<div>
<blockquote type="cite">
<div>
On Dec 6, 2015, at 8:12 PM, Matthew Johnson <
<a href="mailto:matthew@anandabits.com" target="_blank">matthew@anandabits.com</a>> wrote:
</div>
<br>
<div>
<span style="font-family:Palatino-Roman;font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;float:none;display:inline!important">Thanks for the links Erica. I appreciate your sharing them.</span>
<div style="font-family:Palatino-Roman;font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">
<br>
</div>
<div style="font-family:Palatino-Roman;font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">
A lot of the examples in these articles are variations on the initialization problem (which I believe is better solved in other ways).
</div>
<div style="font-family:Palatino-Roman;font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">
<br>
</div>
<div style="font-family:Palatino-Roman;font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">
The other major use case appears to be DSLs (I consider the graphics code examples to be effectively a DSL for hard-coding graphics data). If one of the major use cases for method cascades is to create DSLs I think part of the discussion needs to address the question of whether or not this is the best tool to use to create DSLs in Swift (or at least certain classes of DSL). If the answer is yes then I it becomes pretty easy for this feature to demonstrate its merit. If Swift has (or can have) better tools for creating DSLs (hygienic macros?) then I think we need to look to other use cases to justify method cascades.
<div>
<br>
</div>
<div>
There were a few examples that don’t really fall into either of the two categories. There is no doubt that this feature would reduce syntactic clutter in some code that could not be eliminated by any other feature. Maybe they are pervasive enough to warrant language support and maybe not. I haven’t seen enough real-world examples to convince me yet, but am keeping my mind open and looking forward to seeing more.
<div>
<br>
</div>
<div>
<br>
<div>
<blockquote type="cite">
<div>
On Dec 6, 2015, at 8:45 PM, Erica Sadun via swift-evolution <
<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>> wrote:
</div>
<br>
<div>
<div style="word-wrap:break-word">
<div>
Please note that the updated topic is no longer setup closures, which I have been convinced is the less compelling of the two related concepts, but method cascading.
</div>
<div>
<br>
</div>
<div>
Rather than re-invent the wheel, let me offer this reading list:
</div>
<div>
<br>
</div>
<div>
<ul style="padding:0px 0px 0px 2em;margin-top:0px;margin-bottom:16px;color:rgb(51,51,51);font-family:'Helvetica Neue',Helvetica,'Segoe UI',Arial,freesans,sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol';font-size:16px;background-color:rgb(255,255,255)">
<li><a href="https://docs.google.com/document/d/1U0PeHtVQHMQ8usy7xI5Luo01W5LuWR1acN5odgu_Mtw/edit?pli=1#heading=h.7yzml1vnq8eu" style="background-color:transparent;color:rgb(64,120,192);text-decoration:none" target="_blank"><u>Dart language feature request: method cascades</u></a></li>
<li><a href="http://news.dartlang.org/2012/02/method-cascades-in-dart-posted-by-gilad.html" style="background-color:transparent;color:rgb(64,120,192);text-decoration:none" target="_blank"><u>Method Cascades in Dart</u></a></li>
<li><a href="http://radar.oreilly.com/2013/05/8-dart-features-those-fat-cats-dont-want-you-to-know.html" style="background-color:transparent;color:rgb(64,120,192);text-decoration:none" target="_blank"><u>8 Dart Features / Fluent APIs</u></a></li>
<li><a href="https://mail.python.org/pipermail//python-ideas/2013-November/024124.html" style="background-color:transparent;color:rgb(64,120,192);outline:0px" target="_blank">Dart-like method cascading operator in Python</a></li>
<li><a href="http://devblog.avdi.org/2011/09/26/sbpp-4-method-cascades/" style="background-color:transparent;color:rgb(64,120,192);text-decoration:none" target="_blank"><u>Method Cascades (in Smalltalk)</u></a></li>
</ul>
<div>
<br>
</div>
</div>
<div>
-- E
</div>
<div>
<br>
</div>
<div>
<blockquote type="cite">
<div>
On Dec 6, 2015, at 7:04 PM, Matthew Johnson <
<a href="mailto:matthew@anandabits.com" target="_blank">matthew@anandabits.com</a>> wrote:
</div>
<br>
<div>
<div dir="auto">
<div>
<span style="background-color:rgba(255,255,255,0)">I do agree that current approaches are a bit ugly, that they are common in Cocoa code, and that the proposal cleans this up. I would even enjoy the cleaner syntax in my own code if the feature was adopted.</span>
</div>
<div>
<br>
</div>
<div>
However, I share Jacob's thought that focusing on improving initialization flexibility is where we should focus. I think it is a better use of our time, effort and language feature "budget". This might be a more complex problem to solve, but the payoff is much larger in the end.
</div>
<div>
<br>
</div>
<div>
Ideally instances should be fully configured for their intended use when initialization completes. I view the *need* for post-initialization setup as a deficiency in the language, the interface of the type, or both (even if a type must expose members that are mutated by users during the lifetime of an instance it should still be possible to fully configure an instance for its initial use during initialization).
</div>
<div>
<br>
</div>
<div>
If we can remove the aforementioned deficiency we will not need "setup closures". Doing this will require a language feature as well as a way to take advantage of the new feature when using Cocoa (probably through the Objective-C API import mechanism).
</div>
<div>
<br>
</div>
<div>
We obviously need to begin with the language feature so that is where I'm focusing right now. I plan to write a first draft of a proposal soon.
</div>
<div>
<br>
</div>
<div>
All of this aside, I am still interest in hearing about additional use cases for the "method cascade" idea. If it is more broadly applicable I might find it more worthwhile.
<br>
<br>
<div>
Sent from my iPhone
</div>
</div>
<div>
<br>On Dec 6, 2015, at 3:13 PM, Jacob Bandes-Storch via swift-evolution <
<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>> wrote:
<br>
<br>
</div>
<blockquote type="cite">
<div>
<div dir="ltr">
It seems like setting properties just after init is the main use case here.
<div>
<br>
</div>
<div>
I'm not against this idea, but I want to point out that this doesn't *need* to be solved by a change to the language. You can easily define a
<span> </span>
<font face="monospace, monospace">convenience init</font>
<span> </span>for UILabel that takes textAlignment, font, text, and numberOfLines as parameters. They could have default values so you can specify just the ones you need.
</div>
<div>
<br>
</div>
<div>
I like the idea of being able to do configure objects/values conveniently, but I'm not sure how to justify a language change for it. Perhaps we just need better autogeneration of initializers during Obj-C header import.
</div>
<div>
<div>
<br>
</div>
</div>
<div class="gmail_extra">
<div>
<div>
<div dir="ltr">
<div>
Jacob Bandes-Storch
<br>
</div>
</div>
</div>
</div>
<br>
<div class="gmail_quote">
On Sun, Dec 6, 2015 at 1:06 PM, Erica Sadun via swift-evolution
<span> </span>
<span dir="ltr"><<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>></span>
<span> </span>wrote:
<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div style="word-wrap:break-word">
Do you want me to tweak that? Or remove it entirely? Also, I think I forgot to name-drop you slightly earlier as well
<div>
<div>
<div>
<br>
<div>
<blockquote type="cite">
<div>
On Dec 6, 2015, at 2:04 PM, David Waite <
<a href="mailto:david@alkaline-solutions.com" target="_blank">david@alkaline-solutions.com</a>> wrote:
</div>
<br>
<div>
<div style="word-wrap:break-word">
I’m leaning away from “self in” style syntax - I think there are too many cases where you still want to be able to bind and access the self of the object your closure was declared within.
<div>
<br>
</div>
<div>
I’m not sure you have to establish a new “self” however - have the type of object given to with is known, so the methods/functions available to it can be exposed as lexical scope.
</div>
<div>
<br>
</div>
<div>
To keep code clarity, use of methods/functions which shadow something in higher lexical scope should likely result in compiler errors.
</div>
<div>
<br>
</div>
<div>
-DW
</div>
<div>
<br>
<div>
<div>
<blockquote type="cite">
<div>
On Dec 6, 2015, at 1:48 PM, ilya via swift-evolution <
<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>> wrote:
</div>
<br>
<div>
<div style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;word-spacing:0px;white-space:pre-wrap">
I applaud honest description of drawbacks in the proposal :)
<br>
<br>There examples given, I think, demonstrate that using self without any special access leads to unresolvable ambiguities.
<br>
<br>If one wants to work "inside" the configured object, this seems like a good job for a private initializer. All of the ambiguities will be resolved, because extracting the init away removes its ability to capture names from the local context.
<br>
<br>Alternatively, I think it makes sense to continue working on configuration syntax, with "default" access to local context and "explicit" access to the object. Let's just replace $0 with something else.
<br>
<br>Hopefully I don't sounds too pessimistic. Erica's proposal looks going in the right direction to me.
<br>
</div>
<div class="gmail_quote" style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">
<div dir="ltr">
On Sun, Dec 6, 2015 at 23:30 Erica Sadun via swift-evolution <
<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>> wrote:
<br>
</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div style="word-wrap:break-word">
<div>
It's probably better at this point for me to collect my thoughts and summarize where I am at.
</div>
<div>
<br>
</div>
<div>
<a href="https://gist.github.com/erica/eb32feb22ba99629285a" target="_blank">https://gist.github.com/erica/eb32feb22ba99629285a</a>
</div>
<div>
<br>
</div>
<div>
Please feel free to comment on-list about this proposal (github does not forward comment alerts) and
</div>
<div>
then I will start a new list thread as a Proposal rather than as a Request for Discussion.
</div>
<div>
<br>
</div>
<div>
Best,
</div>
<div>
<br>
</div>
<div>
-- E
</div>
</div>
<div style="word-wrap:break-word">
<div>
<br>
</div>
<br>
<div>
<blockquote type="cite">
<div>
On Dec 6, 2015, at 12:45 PM, ilya <
<a href="mailto:ilya.nikokoshev@gmail.com" target="_blank">ilya.nikokoshev@gmail.com</a>> wrote:
</div>
<br>
<div>
<div dir="ltr">
Sorry, did I misunderstand the question?
<div>
<br>
</div>
<div>
Did you asked whether my definition will work for immutable value types?
</div>
<div>
If that's the question, the answer is still yes, the link has an example :)
</div>
</div>
<div class="gmail_extra">
<br>
<div class="gmail_quote">
On Sun, Dec 6, 2015 at 10:43 PM, Erica Sadun
<span> </span>
<span dir="ltr"><<a href="mailto:erica@ericasadun.com" target="_blank">erica@ericasadun.com</a>></span>
<span> </span>wrote:
<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div style="word-wrap:break-word">
<div>
I was specifically referring to value types. I apologize for not being clearer.
</div>
<span><font color="#888888">
<div>
<br>
</div>
<div>
-- E
</div></font></span>
<div>
<div>
<div>
<br>
</div>
<br>
<div>
<blockquote type="cite">
<div>
On Dec 6, 2015, at 12:42 PM, ilya <
<a href="mailto:ilya.nikokoshev@gmail.com" target="_blank">ilya.nikokoshev@gmail.com</a>> wrote:
</div>
<br>
<div>
<div dir="ltr">
Yes, it works for immutable objects with the correct definition, see the playground contents at
<span> </span>
<a href="https://github.com/ilyannn/iOS-Swift-Materials/blob/master/Playgrounds/Configure.playground/Contents.swift" target="_blank">https://github.com/ilyannn/iOS-Swift-Materials/blob/master/Playgrounds/Configure.playground/Contents.swift</a>
</div>
<div class="gmail_extra">
<br>
<div class="gmail_quote">
On Sun, Dec 6, 2015 at 8:10 PM, Erica Sadun
<span> </span>
<span dir="ltr"><<a href="mailto:erica@ericasadun.com" target="_blank">erica@ericasadun.com</a>></span>
<span> </span>wrote:
<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div style="word-wrap:break-word">
<div>
I have developed something similar as well (
<a href="http://ericasadun.com/2015/11/15/speeding-up-swift-playgrounds-with-closure-initialization-swiftlang/" target="_blank">http://ericasadun.com/2015/11/15/speeding-up-swift-playgrounds-with-closure-initialization-swiftlang/</a>).
</div>
<div>
<br>
</div>
<div>
Is yours capable of handling enums and structs that would otherwise be let after declaration because mine is not.
</div>
<span><font color="#888888">
<div>
<br>
</div>
<div>
-- E
</div>
<div>
<br>
</div><br></font></span>
<div>
<blockquote type="cite">
<div>
<div>
<div>
On Dec 5, 2015, at 5:16 PM, ilya via swift-evolution <
<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>> wrote:
</div>
<br>
</div>
</div>
<div>
<div>
<div>
<div dir="ltr">
> PROBLEM: With many Apple-supplied classes, typical initializers fail to fully set up an instance for use. Here's one example: ...
<div>
<br>
</div>
<div>
FWIW, I created a configuration operator more then a year ago, and use it in all of my Swift projects:
</div>
<div>
<br>
</div>
<div>
<div>
let task = NSTask() +=+ {
</div>
<div>
<span> </span>$0.launchPath = "/usr/bin/mdfind"
</div>
<div>
<span> </span>$0.arguments = ["kMDItemDisplayName == *.playground"]
</div>
<div>
<span> </span>$0.standardOutput = pipe
</div>
<div>
}
</div>
<div>
<br>
</div>
<div>
Note you can also use the configured object in the rhs:
</div>
<div>
<br>
</div>
<div>
<div>
let questionLabel = UILabel() +=+ {
</div>
<div>
<span> </span>$0.textAlignment = .Center
</div>
<div>
<span> </span>$0.font = UIFont(name:"DnealianManuscript", size: 72)
</div>
<div>
<span> </span>$0.text = currentQuestion.questionText
</div>
<div>
<span> </span>$0.numberOfLines = 0
</div>
</div>
<div>
<span> </span>view.addSubview($0)
</div>
<div>
}
</div>
<div>
<br>
</div>
</div>
<div>
This $0. certainly looks ugly and it would be great to be able to simplify this. I don't llike the following much though (dot-syntax can be ambiguos here, and using simply a method name is even worse):
</div>
<div>
<br>
</div>
<div>
<div>
let questionLabel = UILabel() +=+ {
</div>
<div>
<span> </span>.textAlignment = .Center
</div>
<div>
<span> </span>.font = UIFont(name:"DnealianManuscript", size: 72)
</div>
<div>
<span> </span>.text = currentQuestion.questionText
</div>
<div>
<span> </span>.numberOfLines = 0
</div>
<div>
<span> </span>view.addSubview($0)
</div>
<div>
}
</div>
</div>
<div>
<br>
</div>
<div>
Actually I would be happy with something like
</div>
<div>
<br>
</div>
<div>
<div>
let questionLabel = UILabel() .{
</div>
<div>
<span> </span>..textAlignment = .Center
</div>
<div>
<span> </span>..font = UIFont(name:"DnealianManuscript", size: 72)
</div>
<div>
<span> </span>..text = currentQuestion.questionText
</div>
<div>
<span> </span>..numberOfLines = 0
</div>
<div>
<span> </span>view.addSubview($0)
</div>
<div>
}
</div>
</div>
<div>
<br>
</div>
<div>
Other thoughts?
</div>
<div>
<br>
</div>
<div>
</div>
</div>
</div>
</div>
<span><span> </span>_______________________________________________<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></span>
</div>
</blockquote>
</div>
<br>
</div>
</blockquote>
</div>
<br>
</div>
</div>
</blockquote>
</div>
<br>
</div>
</div>
</div>
</blockquote>
</div>
<br>
</div>
</div>
</blockquote>
</div>
<br>
</div>_______________________________________________
<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" rel="noreferrer" target="_blank">https://lists.swift.org/mailman/listinfo/swift-evolution</a>
<br>
</blockquote>
</div>
<span style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;float:none;display:inline!important"><span> </span>_______________________________________________</span>
<br style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">
<span style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;float:none;display:inline!important">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;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">
<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;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px" target="_blank">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;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">
<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;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px" target="_blank">https://lists.swift.org/mailman/listinfo/swift-evolution</a>
</div>
</blockquote>
</div>
<br>
</div>
</div>
</div>
</div>
</blockquote>
</div>
<br>
</div>
</div>
</div>
</div>
<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" rel="noreferrer" target="_blank">https://lists.swift.org/mailman/listinfo/swift-evolution</a>
<br>
<br>
</blockquote>
</div>
<br>
</div>
</div>
</div>
</blockquote>
<blockquote type="cite">
<div>
<span>_______________________________________________</span>
<br>
<span>swift-evolution mailing list</span>
<br>
<span><a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a></span>
<br>
<span><a href="https://lists.swift.org/mailman/listinfo/swift-evolution" target="_blank">https://lists.swift.org/mailman/listinfo/swift-evolution</a></span>
<br>
</div>
</blockquote>
</div>
</div>
</blockquote>
</div>
<br>
</div>_______________________________________________
<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>
</div>
</blockquote>
</div>
</div>
</div>
</div>
</div>
</blockquote>
</div>
<br>
</div> _______________________________________________
<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>
</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></div></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>