Свойства Testing QuickCheck против нескольких типов?

Я не думаю, что существуют любые твердые правила; с помощью уровней log4j-типа мои 'эмпирические правила' - что-то как:

  • ФАТАЛЬНЫЙ : приложение (или по крайней мере поток) собирается умереть ужасно. Это - то, куда информация, объясняя , почему это происходит, идет.
  • ОШИБКА : что-то, что выполнение приложения этого это не было должно. Это не пользовательская ошибка ('недопустимый поисковый запрос'); это - отказ утверждения, сетевая проблема, и т.д. и т.д., вероятно, тот, который собирается прервать текущую операцию
  • , ПРЕДУПРЕЖДАЕТ : что-то это касается, но не заставляет операцию прерываться; # соединений в понижении пула DB, unusual-expected тайм-аута в операции, и т.д. Я часто думаю, 'ПРЕДУПРЕЖДАЮТ' как что-то, что это полезно в агрегате; например, grep, группа, и считают их для получения изображения того, что влияет на системное здоровье
  • ИНФОРМАЦИЯ : Нормальный вход это - часть нормального функционирования приложения; диагностический материал, таким образом, можно возвратиться и сказать, 'как часто эта операция широкого уровня происходила?', или, 'как данные пользователя входили в это состояние?'
  • ОТЛАДКА : Прочь по умолчанию, способный быть включенным для отладки определенных неожиданных проблем. Это - то, где Вы могли бы зарегистрировать подробную информацию о ключевых параметрах метода или другой информации, которая полезна для нахождения вероятных проблем в определенных 'проблематичных' областях кода.
  • ТРАССИРОВКА : "Серьезно, WTF продолжается здесь?!?! Я должен зарегистрировать каждый оператор, который я выполняю для нахождения этого # $ @ing ошибка повреждения памяти, прежде чем я сойду с ума"

Не набор в камне, но общее представление о том, как я думаю о нем.

12
задан John Millikin 19 September 2009 в 18:29
поделиться

1 ответ

Я не могу скомпилировать ваш код, поэтому ... слепой выстрел:

попробуйте

forallAtoms :: (forall a. (Atomic a, Show a) => a -> Bool) -> [TestOptions -> IO TestResult]

в качестве сигнатуры типа. Для этого требуется расширение языка -XRankNTypes.

Проблема, с которой вы столкнулись, как я понимаю, заключается в том, что GHC пытается найти один тип, который нужно вставить для a в x :: (a -> Bool) для всей области действия функции, но вы уже указали там три разных.

12
ответ дан 2 December 2019 в 21:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: