Haskell Quickcheck - wie man nur druckbare Zeichenketten erzeugt

Ich habe eine Reihe von einfachen Demo-Programmen, die Strings kodieren / dekodieren und welche generieren wollenschneller Check testet für sie, aber um die Tests nur auf druckbare Zeichenfolgen zu beschränken. Die Verwendung eines Schutzes ist zu langsam und scheitert an zu vielen generierten und zurückgewiesenen Testfällen. Daher möchte ich einen sicheren Generator für diese Domäne erstellen.

Die Hinweise darauf, die ich gesehen habe, sagen, dass entweder (1) die eigenen definierenWillkürlich Instanz fürVerkohlen und verwenden Sie dies, um nur druckbare Zeichen für Zeichenfolgen zu generieren, oder (2) um die Funktionen selbst in a zu verpackenneuer Typ und schreibe eineWillkürlich Beispiel dafür.

Aber der Versuch, (1) zu tun, schlägt fehl, weil es jetzt eine Definition dafür in Test.QuickCheck gibt, und wie würde man das tun - erstelle einesafeChar generator für einen neuen typ und muss dann nochmal einen adapter für die getesteten funktionen herstellen? (Der RWH-Buchteil zu diesem Thema weist darauf hin, dass es veraltet ist, diese DIY-Char-Definition zu empfehlen.)

Der Versuch (2) zu tun, scheint so, als könnte ich dem Testangebot entweder nur einen Schutz hinzufügen, der lokalisiert und einfach ist (aber fehlschlägt), oder einen neuen Wrapper und einen dazugehörigen Generator schreiben, was chaotischer erscheint.

Natürlich ist dies einfach (!) Und alle Tools werden bereitgestellt. Könnte jemand raten, ob dies eine korrekte Analyse ist, und ein Beispiel dafür geben, wie dies am besten funktioniert?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage