> Chris Lattner wrote: > > let np = Python.import("numpy") > let b = 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)
You could require `throws` on `subscript(dynamicMember:)` APIs. "Throwing Properties and Subscripts proposal by brentdax" <https://github.com/apple/swift-evolution/pull/218> let np = Python.import("numpy") let x = try! np.array([6, 7, 8]) let y = try! np.arange(24).reshape(2, 3, 4) let a = try! np.ones(3, dtype: np.int32) let b = try! np.linspace(0, pi, 3) let c = try! a+b let d = try! np.exp(c) If you allow dynamic member lookup on stdlib types: Double.pi.significant ^ ERROR: subscript can throw, but it is not marked with 'try' NOTE: did you mean 'significand'? An implementation could fail by throwing an error or returning `nil`. For example, JSValue/JSON member lookup could allow optional chaining. But trying to invoke a non-callable JSValue could throw a TypeError. -- Ben _______________________________________________ swift-evolution mailing list swift-evolution@swift.org https://lists.swift.org/mailman/listinfo/swift-evolution