I have some functions with preconditions. For example, foo::[a]->IO Bool requires a list of at least three elements, and bar::[a]->Int->IO () requires that its second argument is some position within the list. How can I test these with quickcheck? If I use ==>, quickcheck gives up with very few test cases.