Haskell quickcheck - como gerar apenas strings imprimíveis

Eu tenho um conjunto de programas de demonstração simples que codificam / decodificam seqüências de caracteres e desejam gerar algunschecagem rápida testes para eles, mas para limitar os testes apenas a sequências imprimíveis. O uso de uma proteção é muito lento e falha devido a muitos casos de teste gerados e rejeitados, por isso desejo criar um gerador seguro para esse domínio.

As referências a isso que eu vi dizem para (1) definir as própriasArbitrário instância paraCaracteres e use isso para gerar apenas caracteres imprimíveis para seqüências de caracteres ou (2) para envolver as próprias funções em umnewtype e escreva umArbitrário instância para isso.

Mas tentar fazer (1) falha porque agora existe uma definição para isso no Test.QuickCheck e, portanto, como alguém faria isso - crie umsafeChar gerador para um novo tipo e, em seguida, novamente tem que produzir um adaptador para as funções testadas? (A seção do livro da RWH sobre esta nota está desatualizada ao recomendar esta definição de char DIY.)

Tentar fazer (2) parece que posso adicionar uma proteção à proposição de teste localizada e simples (mas falhar) ou escrever um novo wrapper e gerador associado, que parece mais confuso.

Claramente, isso é simples (!) E todas as ferramentas são fornecidas, mas alguém poderia aconselhar se essa é uma análise correta e dar um exemplo de como fazer isso da melhor maneira?

questionAnswers(2)

yourAnswerToTheQuestion