Hm... not really.<p>Say you have a function, `f : (bool, T) -&gt; Option&lt;T&gt;`.<p><pre><code>    function f&lt;T&gt;(cond : bool, value : T) : Option&lt;T&gt; {
      if cond {
        return value                 &#x2F;&#x2F; equivalent: Some(value)
      } else {
        return null                  &#x2F;&#x2F; equivalent: None
      }
    }

    let x = f(false, f(false, 1))    &#x2F;&#x2F; equivalent: None
    let y = f(true, f(false, 1))     &#x2F;&#x2F; equivalent: Some(None)
</code></pre>
There is no way to tell apart `x` and `y`.