You mean overloaded, not shadowed, right?

> On Mar 19, 2017, at 8:49 PM, Matthew Johnson <matt...@anandabits.com> wrote:
> 
> 
> 
> Sent from my iPad
> 
>> On Mar 19, 2017, at 10:31 PM, Jaden Geller via swift-evolution 
>> <swift-evolution@swift.org> wrote:
>> 
>> I think the clarity desired is more similar to that obtained by the `try` 
>> keyword. Ya, the compiler knows that this function throws already, but Swift 
>> aims for clarity in the source code. Clarity is often achieved by providing 
>> potentially redundant information for the programmer.
>> 
>> As proposed, it is difficult to distinguish a key path from a static 
>> variable. Maybe that's not problematic? Well, it's up to the community to 
>> decide.
> 
> Why don't we just say all instance properties are shadowed by a static 
> constant property of the same name with the appropriate key path type.  This 
> makes it not mysterious at all but instead very straightforward.  We could 
> even say that static and class properties are shadowed by a key path property 
> on the meta type.
> 
> 
>> I do think it is a bit worrisome that static variable access might cause 
>> side effects (or at least, might take a while to compute) but creating key 
>> paths should not, but that's a fringe case probably.
>> 
>>> On Mar 19, 2017, at 6:32 PM, Brent Royal-Gordon via swift-evolution 
>>> <swift-evolution@swift.org> wrote:
>>> 
>>>>> On Mar 19, 2017, at 4:47 PM, Charles Srstka <cocoa...@charlessoft.com> 
>>>>> wrote:
>>>>> 
>>>>> This is true of many things.  It is why IDEs make type information 
>>>>> readily available.
>>>> 
>>>> Is clarity not a thing to be desired?
>>> 
>>> Clarity is in the eye of the beholder. Here's one notion of clarity:
>>> 
>>>     sum :: (Num a, Foldable t) => t a -> a
>>>     sum = foldl (+) 0
>>> 
>>> Here's another:
>>> 
>>>     int sum(int array[], size_t len) {
>>>             int total = 0;
>>>             for(size_t i = 0; i < len; i++) {
>>>                     total += array[i];
>>>             }
>>>             return total;
>>>     }
>>> 
>>> And another:
>>> 
>>>     SUM PROC
>>>      ; this procedure will calculate the sum of an array
>>>      ; input : SI=offset address of the array
>>>      ;       : BX=size of the array
>>>      ; output : AX=sum of the array
>>> 
>>>      PUSH CX                        ; push CX onto the STACK
>>>      PUSH DX                        ; push DX onto the STACK
>>> 
>>>      XOR AX, AX                     ; clear AX
>>>      XOR DX, DX                     ; clear DX
>>>      MOV CX, BX                     ; set CX=BX
>>> 
>>>      @SUM:                          ; loop label
>>>        MOV DL, [SI]                 ; set DL=[SI]
>>>        ADD AX, DX                   ; set AX=AX+DX
>>>        INC SI                       ; set SI=SI+1
>>>      LOOP @SUM                      ; jump to label @SUM while CX!=0
>>> 
>>>      POP DX                         ; pop a value from STACK into DX
>>>      POP CX                         ; pop a value from STACK into CX
>>> 
>>>      RET                            ; return control to the calling 
>>> procedure
>>>     SUM ENDP
>>> 
>>> And one more:
>>> 
>>>     extension Sequence where Element: Arithmetic {
>>>             func sum() {
>>>                     return reduce(0, +)
>>>             }
>>>     }
>>> 
>>> Clarity is not achieved by explicitly stating every detail of your code. 
>>> It's achieved by explicitly stating what needs to be said, and *not* 
>>> explicitly stating what *doesn't* need to be said.
>>> 
>>> The people who oppose using a special syntax for this feature think that, 
>>> by and large, clarity is best served by *not* explicitly stating when 
>>> you're using a key path. They believe that you are unlikely to run into 
>>> ambiguity and, when you do, it will be easy to work around it. This is an 
>>> opinion, so it's open to disagreement, but that's where they stand on it.
>>> 
>>> -- 
>>> Brent Royal-Gordon
>>> Architechies
>>> 
>>> _______________________________________________
>>> 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
_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to