module Problem1.Laws where import qualified Problem1.Deep as D import qualified Prelude as P import Prelude ((==),(+),(-),($),id) import qualified Test.QuickCheck as Q prop_law1 xs = D.length (D.fromList xs) == P.length xs prop_law2 x = D.head (D.fromList [x]) == x prop_law3 n = Q.forAll (Q.choose (0,n-1)) $ \i -> D.index (D.fromFun n id) i == i -- ... -- For most interesting laws an equality check is needed for vectors -- import Problem1.Deep_Instances prop_law4 v w = D.length (v D.++ w) == D.length v + D.length w prop_law5 v = Q.forAll (Q.choose (0,n)) $ \i -> D.take n v D.++ D.drop n v == v where n = D.length v