Haskell quickcheck - jak wygenerować tylko ciągi do druku

Mam zestaw prostych programów demonstracyjnych, które kodują / dekodują ciągi i chcą je wygenerowaćszybkie sprawdzenie testy dla nich, ale ograniczenie testów tylko do drukowalnych ciągów. Używanie strażnika jest zbyt wolne i kończy się niepowodzeniem z powodu zbyt wielu wygenerowanych i odrzuconych przypadków testowych, więc chcę utworzyć bezpieczny generator dla tej domeny.

Odniesienia do tego, które widziałem, aby albo (1) zdefiniować własneArbitralny przykładZwęglać i używaj tego do generowania tylko znaków drukowalnych dla łańcuchów, lub (2) do zawijania samych funkcji wnowy typ i napiszArbitralny na przykład.

Ale próba (1) kończy się niepowodzeniem, ponieważ istnieje teraz definicja tego w Test.QuickCheck, a więc jak to zrobić - utwórzsafeChar generator dla nowego typu, a następnie ponownie musi utworzyć adapter do testowanych funkcji? (Część poświęcona książce RWH na ten temat zauważa, że ​​zalecanie tej definicji „DIY Char” jest nieaktualne).

Próba zrobienia (2) wydaje się, że mogę albo po prostu dodać strażnika do propozycji testowej, która jest zlokalizowana i prosta (ale nie działa), albo napisać nowy wrapper i powiązany generator, który wydaje się bardziej chaotyczny.

Oczywiście jest to proste (!) I wszystkie narzędzia są dostępne, ale czy ktoś mógłby doradzić, czy jest to poprawna analiza i podać przykład, jak najlepiej to zrobić?

questionAnswers(2)

yourAnswerToTheQuestion