 <p>Hide the Prelude's <code>(!!)</code> operator and you can define your own <code>(!!)</code> operator:</p> <pre><code>import Prelude hiding ((!!)) (!!) :: MyType1 -&gt; MyType2 -&gt; MyType3 x !! i = ... -- Go wild! </code></pre> <p>You can even make a type class for your new <code>(!!)</code> operator if you prefer.</p>