Haskell quickcheck - как генерировать только строки для печати

У меня есть набор простых демонстрационных программ, которые кодируют / декодируют строки и хотят сгенерировать некоторыебыстрая проверка тесты для них, но ограничить тесты только для печати строк. Использование защиты слишком медленное и терпит неудачу из-за слишком большого количества сгенерированных и отклоненных тестовых случаев, поэтому я хочу создать безопасный генератор для этого домена.

Ссылки на это, которые я видел, говорят либо (1) определить один 'с собственнымипроизвольный экземпляр дляголец и использовать это для генерации только печатаемых символов для строк, или (2) чтобы обернуть сами функции вНовый тип и написатьпроизвольный пример для этого.

Но попытка сделать (1) не удалась, потому что теперь есть определение для этого в Test.QuickCheck, и как можно это сделать - создатьsafeChar Генератор для нового типа, а затем снова придется производить адаптер для проверенных функций? (Раздел книги RWH на этом примечании, что он устарел в рекомендации этого определения DIY Char.)

Попытка сделать (2) выглядит так, как будто я могу либо просто добавить защиту к тестовому предложению, которое локализовано и просто (но терпит неудачу), либо написать новую обертку и связанный генератор, что кажется более сложным.

Очевидно, что это просто (!), И все инструменты предоставляются, но кто-то может посоветовать, если это правильный анализ, и привести пример того, как лучше всего это сделать?

Ответы на вопрос(2)

Ваш ответ на вопрос