Как лучше всего отображать причины неудачной проверки свойства при проверке с помощью QuickCheck?
Рассмотрим, например:
prop a b = res /= []
where
(res, reason) = checkCode a b
Тогда сеанс может выглядеть так:
> quickCheck prop
Falsifiable, after 48 tests:
42
23
Но для отладки было бы очень удобно показать причину сбоя в составе фальсифицируемого отчета quickCheck.
Я взломал это так:
prop a b = if res /= [] then traceShow reason False else True
where
(res, reason) = checkCode a b
Есть ли лучший/приятный или более быстрый способ сделать это?