!0.     None&',.234568=>?@ACHSUVX  basic-sop(Generic generation of random test cases.AThis function is a proof-of-concept implementation of a generic % that can be used to instantiate the  class in  QuickCheck.$If you want to use it on a datatype T for which you have a  instance, you can say: 3instance Arbitrary T where arbitrary = garbitraryNote that currently no attempts are being made to generate arbitrary values of a particular size, and it is possible that this function diverges for recursive structures.None&',.234568=>?@ACHSUVXi basic-sopGeneric equality.PThis function reimplements the built-in generic equality that you get by using  deriving Eq.Assuming you have a  instance for a datatype T, you can use  as follows:  instance Eq T where (==) = geqNone&',.234568=>?@ACHSUVX basic-sop!Generic reduction to normal form.2This function is a generic implementation of the / function that can be used to instantiate the  class in deepseq.Assuming you have a  instance for your datatype T, you can use  as follows: $instance NFData T where rnf = grnfNone&',.234568=>?@ACHSUVX basic-sop Generic show.YThis function is a proof-of-concept implementation of a function that is similar to the , function you get by using 'deriving Show'.It serves as an example of an SOP-style generic function that makes use of metadata. However, it does currently not handle parentheses correctly, and is therefore not really usable as a replacement.+If you want to use it anyway on a datatype T for which you have a  instance, you can use  as follows: $instance Show T where show = gshowNone&',.234568=>?@ACHSUVX. basic-sop"Generic computation of a skeleton.A skeleton for a record type has a defined "spine" but is undefined everywhere else. For instance, a skeleton for pairs would be (undefined, undefined)cWe introduce a type class for this purpose because the skeleton for nested records would look like #(undefined, (undefined, undefined))The default instance of I applies to record types; for everything else, use undefined (or error): 3instance Skeleton SomeRecordType -- no where clauseor >instance Skeleton SomeNonRecordType where skeleton = undefinedHThis is an example of how SOP-style generic functions can be used with DefaultSignatures.Furthermore, metadata is used in order to produce better error messages. For the undefined components of a record, an error is triggered that mentions the name of the field. basic-sopReturns a skeleton. basic-sopCompute a "spine" for a single constructor datatype. That is, a valid value of that type with a defined spine but undefined everywhere else. For record types we give "error" values that mention the names of the fields.      !"#(basic-sop-0.2.0.3-5ktGsjP79djF37sNslueCSGenerics.SOP.ArbitraryGenerics.SOP.EqGenerics.SOP.NFDataGenerics.SOP.ShowGenerics.SOP.Skeleton(QuickCheck-2.13.1-1rO57X9FmbTEL9U6cBekOsTest.QuickCheck.Arbitraryshrink arbitrary Arbitrary garbitrarygeqgrnfgshowSkeletonskeleton$fSkeletonText$fSkeletonBool$fSkeletonRatio$fSkeletonDouble $fSkeletonInt$fSkeletonMaybe $fSkeleton[]+generics-sop-0.4.0.1-50QtUhSPhiXGrcY9j3QNt9Generics.SOP.UniverseGenericdeepseq-1.4.4.0Control.DeepSeqrnfNFDatabaseGHC.Showshow gskeleton