> But given the scope capturing nature of closures I was actually wondering if 
> this 'purity' should be applied to closures.
I think It should, pure closure cannot have outside references and therefore 
cannot create reference cycles even though they are escaping.

I tend toward using the => sign since it doesn't require a lot of change, it 
has a nice lightweight syntax and seems different enough from -> .
The pure keyword in front of the function signature looks like a lot of noise 
for such a simple concept. And It will only get worse in function signatures.

see the difference between 

func pureCurryCompose<A, B, C>(f: @pure(B) -> C) -> @pure(@pure(A) -> B) -> 
(@pure(A) -> C)

and 

func pureCurryCompose<A, B, C>(f: (B) => C) => ((A) => B) => (A) => C

The second is easiest to read.

(of course I would argue that 

func pureCurryCompose<A, B, C>(f: B => C) => (A => B) => (A => C) 

is the most readable of all but I'm too late for that proposal )

> On 17 Feb 2017, at 18:02, Florent Vilmart via swift-evolution 
> <swift-evolution@swift.org> wrote:
> 
> We could do:
> 
> pure let closure = { _-> Else in }
> 
> But given the scope capturing nature of closures I was actually wondering if 
> this 'purity' should be applied to closures.
> 
> After all an inline defined func would do.
> 
> 
> On Feb 17, 2017, 11:59 AM -0500, Matthew Johnson <matt...@anandabits.com>, 
> wrote:
>> How do you suggest a closure indicate its purity? Something like this?  
>> 
>> { pure in $0.property } 
>> 
>>> On Feb 17, 2017, at 10:57 AM, Florent Vilmart <flor...@flovilmart.com 
>>> <mailto:flor...@flovilmart.com>> wrote:
>>> 
>>> We were discussing the topic yesterday with others and some suggested 
>>> adding a pure keyword, for improved readability, just before the function 
>>> declaration:
>>> 
>>> Ex:
>>> 
>>> pure func(a:Some) -> Else {}
>>> 
>>> 
>>> 
>>> On Feb 17, 2017, 11:51 AM -0500, Matthew Johnson via swift-evolution 
>>> <swift-evolution@swift.org <mailto:swift-evolution@swift.org>>, wrote:
>>>> 
>>>>> On Feb 17, 2017, at 10:46 AM, David Sweeris via swift-evolution 
>>>>> <swift-evolution@swift.org <mailto:swift-evolution@swift.org>> wrote:
>>>>> 
>>>>> 
>>>>> On Feb 17, 2017, at 08:21, Adrian Zubarev via swift-evolution 
>>>>> <swift-evolution@swift.org <mailto:swift-evolution@swift.org>> wrote:
>>>>> 
>>>>>> I haven’t yet read all the feedback in this topic but I’d like to throw 
>>>>>> some bikeshedding of mine into the room. :)
>>>>>> 
>>>>>> How about this?
>>>>>> 
>>>>>> Version 1: func(pure) …
>>>>>> Version 2: func label(…) ~> ReturnType
>>>>> Version 2 is going to upset those who use "~>" as an operator.
>>>>> 
>>>>> As the # of possible attributes grows, having an obvious grouping 
>>>>> mechanism for them, like version 1, might be worthwhile simply to help 
>>>>> make the list clearer. What about allowing "@(list, of, attributes)" 
>>>>> instead of "@list, @of, @attributes”?
>>>> 
>>>> That would be a little bit awkward for attributes that are parameterized.  
>>>> And if we did do this we should allow the parens to be omitted when there 
>>>> is only one attribute.
>>>> 
>>>>> 
>>>>> - Dave Sweeris
>>>>> _______________________________________________
>>>>> swift-evolution mailing list
>>>>> swift-evolution@swift.org <mailto:swift-evolution@swift.org>
>>>>> https://lists.swift.org/mailman/listinfo/swift-evolution 
>>>>> <https://lists.swift.org/mailman/listinfo/swift-evolution>
>>>> 
>>>> _______________________________________________
>>>> swift-evolution mailing list
>>>> swift-evolution@swift.org <mailto:swift-evolution@swift.org>
>>>> https://lists.swift.org/mailman/listinfo/swift-evolution 
>>>> <https://lists.swift.org/mailman/listinfo/swift-evolution>
>> 
> _______________________________________________
> swift-evolution mailing list
> swift-evolution@swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution

_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to