<div dir="ltr">I do not feel new syntax is needed for this.<br>You can do this currently:<br><br>postfix operator ¿<br><br>extension Optional {<br>    struct UnwrapError: Error {}<br>    static postfix func ¿(_ value: Optional) throws -&gt; Wrapped {<br>        if let value = value {<br>            return value<br>        } else {<br>            throw UnwrapError()<br>        }<br>    }<br>}<br><br>Given function f: (Foo, Foo, Foo) -&gt; Void<br>and functions a, b, c: () -&gt; Foo?<br>you would then chain the calls like<br><br>try? f(a()¿, b()¿, c()¿)<br><br>This is hardly more verbose than<br><br>f(a()?, b()?, c()?)<br><br>At least on mac keyboard ¿ is not hard to type either.<br>Also everyone is free to bikeshed the operator to their liking.<br><br>If special syntax were to be added for this, then in my opinion<br>the behaviour should mimic this; i.e. evaluate arguments left-to-right,<br>abort on first nil.<br><br> -Pertti<br><br></div>