title: Can the result of `fun :: (SomeTypeClass a) => Maybe a -> Result` change if I pass differently typed values of `Nothing`?
body: <p>Pretty much the headline, but let's elaborate:</p>
  
  <p>Assume I have some type class <code>SomeTypeClass</code> and different types <code>A</code>, <code>B</code>, <code>C</code> which each have an instance for it.</p>
  
  <p>Let's further assume I have a function</p>
  
  <pre><code>fun :: (SomeTypeClass a) =&gt; Maybe a -&gt; Result
  </code></pre>
  
  <p>for some type constant <code>Result</code>.</p>
  
  <p>Can the expressions</p>
  
  <ol>
  <li><code>fun (Nothing :: Maybe A)</code></li>
  <li><code>fun (Nothing :: Maybe B)</code></li>
  <li><code>fun (Nothing :: Maybe C)</code></li>
  </ol>
  
  <p>yield different results somehow?</p>
  
  <p>(Maybe by some compiler extension to provide different implementations for <code>fun</code> depending on the argument type or something.)    </p>