[swift-evolution] [Pitch] Retiring `where` from for-in loops

Sean Heber sean at fifthace.com
Mon Jun 13 10:22:40 CDT 2016


> On Jun 13, 2016, at 10:16 AM, Xiaodi Wu <xiaodi.wu at gmail.com> wrote:
> 
> On Mon, Jun 13, 2016 at 9:54 AM, Charlie Monroe <charlie at charliemonroe.net> wrote:
> 
>> On Jun 13, 2016, at 4:46 PM, Xiaodi Wu <xiaodi.wu at gmail.com> wrote:
>> 
>> On Mon, Jun 13, 2016 at 9:28 AM, Sean Heber <sean at fifthace.com> wrote:
>> I’m just (probably obtusely) suggesting that there are different levels and styles of expression and that the existence of one does not render other styles invalid.
>> 
>> In relation to the “where” debate, the fact that you can express everything with “guard” or “if” as you can with “where” is not, in my mind, a strong  argument against “where” because it ignores other more intangible aspects that are going to be a lot harder to quantify since they depend on the context of the problem, the surrounding code, the mindset of the writer, and the assumed mindset of the reader.
>> 
>> I don’t dispute that we *could* live without “where” - that is not the point. We could also live without classes or generics or any of a variety of other features - but why should we when we don’t have to?
>> 
>> I'm not sure where this comes in. I was clarifying what I mean when I call a language construct 'expressive.' As I understand the term, `where` is not expressive, whereas classes and generics are expressive.
> 
> Perhaps this is due to English not being my first language, but I go by the dictionary definition of expressive:
> 
> expressive (adjective) - effectively conveying thought or feeling.
> 
> And I believe that for-in-where is expressing the condition more effectively (and efficiently) than adding if/guard-continue into the actual code block.
> 
> That's fine for English, but I just mean that in a language design context I've always understood the word to encompass the *breadth* of thoughts that can be expressed. In that sense, `where` might express one thing economically, but it cannot express very many things at all, no matter how much text you write in a `where` clause.

Yes, true, there are certainly two meanings in play here - the technical domain specific concept, and the more casual definition. I think the concern of myself (and some others) is that the technical definition, perhaps somewhat ironically, is not expressive enough to capture all of the facets of expression that matter to all of us! I think this particular discussion is taking place at the intersection of technology and liberal arts.

l8r
Sean



More information about the swift-evolution mailing list