Add some property tests for List behaviour. Among other things,
check that the "selected element" bookkeeping maintains a valid
selection at all times (as long as you're using the provided
functions and not manipulating the underlying Vector directly).
The current 'main' has type 'IO Bool' but a return value of 'False'
does not cause the program to exit with nonzero status. Witnessed
by the following:
ftweedal% cat foo.hs
main :: IO Bool
main = putStrLn "goodbye world" *> pure False
ftweedal% runhaskell foo.hs
goodbye world
ftweedal% echo $?
0
This causes the cabal test suite to pass, even when there are
errors. Unless you inspect the QuickCheck output carefully, you
might not notice that a test is failing. Update 'main' to ensure
that we exit nonzero when quickCheckAll returns 'False'.