> 4 Dec. 2017 11:17 Letanyan Arumugam via swift-evolution 
> <swift-evolution@swift.org> wrote:
> 
> The most minimal way of marking expressions in a way I could think of that 
> would also remove anyones notion of "this code is fully supported static 
> Swift code” would be to use the currently reserved ‘ (Single quote).
> 
> Using the code example from another conversation:
> 
> let np = Python.import("numpy")
> let x = np.array([6, 7, 8])
> let y =  np.arange(24).reshape(2, 3, 4)
>       
> let a = np.ones(3, dtype: np.int32)
> let b = np.linspace(0, pi, 3)
> let c = a+b
> let d = np.exp(c)
> print(d)
> 
> Would become:
> 
> let np = Python.import("numpy")
> let x = 'np.array([6, 7, 8])'
> let y = 'np.arrange(24).reshape(2, 3, 4)'
> 
> let a = 'np.ones(3, dtype: np.int32)'
> let b = 'np.linespace(0, pi, 3)'
> let c = a+b
> let d = 'np.exp(c)’
> print(d)

1. a+b is also is a dynamic method call in this example. How would you explain 
to a programmer that they have to use single quotes around some expressions but 
not others?
2. Having this kind of special syntax would feel very arbitrary to the 
programmer, and hard to look up. Fixits would of course be able to help here, 
but if the compiler already knows what you should write, why does it require 
it? Which brings me to my third point:
3. This feels like punishment, like Python making a special syntax for static 
language bridges where they have to use the phrase 
"static_typing_is_for_losers" in front of every method call.

It's not like dynamic method calls will appear in your code if you don't use 
these kind of bridges, and even if you do, it will only be when you call 
methods on that bridge's types. When you call a method on an object, you 
already have to know what that object does, or you will be in trouble.

/Magnus

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

Reply via email to