Como você substitui as instâncias de classe de tipo Haskell fornecidas pelo código do pacot

Tenho algum código Haskell antigo que inclui casos de teste do QuickCheck. As versões mais recentes do QuickCheck (que acabei de atualizar para 2.4.0.1) incluem instâncias de classe de tipo paraArbitrary Word8 e outros. Eles não existiam nas versões 2.0.x mais antigas do Test.QuickCheck.Arbitrary.

Embora útil no sentido geral, o pacote fornecidoArbitrary Word8 gerador não é o que eu quero usar para minha suíte de testes:

instance Arbitrary Word8 where
  arbitrary = frequency [(2, oneof [return ctrlFrameDelim, return ctrlEscape, return ctrlXon, return ctrlXoff]),
                         (8, choose (0, 255))]

O código acima causa um erro de declaração de instância duplicada no tempo de compilação. Posso retirar esse código e seguir em frente com o gerador padrão, mas gostaria de saber a maneira correta de resolver iss

Uma possível solução que considerei (mas não testei) é aliasingWord8 usandonewtype. Isso causaria muitas mudanças em toda a fonte, por isso espero que haja uma maneira mais limp

EDIT: Como mencionado nos comentários abaixo, a resposta aceita foi muito limpa e fácil de implementar:

newtype EncodedByte = EncodedByte Word8

instance Arbitrary EncodedByte where
  arbitrary = liftM EncodedByte $ frequency [(2, elements [ctrlFrameDelim, ctrlEscape, ctrlXon, ctrlXoff]),
                                             (8, choose (0, 255))]

questionAnswers(1)

yourAnswerToTheQuestion