Quickcheck on custom datatype
<p>I succesfully run a quickcheck on this:</p>

<pre><code>testaroo = quickCheck $ checkWin

checkWin :: [(Int, ThePlayers)] -&gt; Bool
checkWin [(1,_),(2,_),(3,_)] = True
checkWin [(4,_),(5,_),(6,_)] = True
checkWin [(7,_),(8,_),(9,_)] = True
checkWin [(1,_),(5,_),(9,_)] = True
checkWin [(3,_),(5,_),(7,_)] = True
checkWin [(1,_),(4,_),(7,_)] = True
checkWin [(2,_),(5,_),(8,_)] = True
checkWin [(3,_),(6,_),(9,_)] = True
checkWin _ = False
</code></pre>

<p>but when i try to run </p>

<pre><code>testaroo = quickCheck $ removeFromList

removeFromList :: (Int, ThePlayers) -&gt; [(Int, ThePlayers)] -&gt; [(Int, ThePlayers)]
removeFromList tuple list = delete tuple list
</code></pre>

<p>I run into the following:</p>

<pre><code>No instance for (Arbitrary ThePlayers)
      arising from a use of `quickCheck'
    Possible fix:
      add an instance declaration for (Arbitrary ThePlayers)
    In the expression: quickCheck
    In the expression: quickCheck $ removeFromList
    In an equation for `testaroo':
        testaroo = quickCheck $ removeFromList
Failed, modules loaded: none.
</code></pre>

<p>What I did to run my quickCheck on checkWin successfully I added</p>

<pre><code>instance Arbitrary BoardState
    where
    arbitrary  = arbitrary
</code></pre>

<p>But in all honesty I'm not quite sure what this does :). Is there anyway I can make the test run on my <code>removeFromList</code> function?</p>