like haskell quickcheck