Implementation of delayed comparison and composition of properties

# Comparison for equality

Values to be compared for equality

Recurse through function to apply comparison to `Equal`

.

Type which should be compared for equality

Result of comparison. Could be passed to `quickCheck`

equalWith :: (Result a -> Result a -> Bool) -> a -> Compared aSource

Compare value using custom comparison function

mapEqual :: (Equal (Result a) -> Equal (Result a)) -> a -> aSource

Map property

zipEquals :: (Equal (Result a) -> Equal (Result a) -> Equal (Result a)) -> a -> a -> aSource

Zip properties