,      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                                                                  Safe' !"&,-23459:;<=?@DFHJLOQRT[\]^abcSafe% !"&-23459:;<=?@DFHJLOQRT[\]^abcCAn Abelian Group is associative, unital, invertible and commutative-A Group is associative, unital and invertibleA Loop is unital and invertible9A CMonoidal Magma is commutative, associative and unital.+A Monoidal Magma is associative and unital.4major conceptual clashidge with many other librariesA Homomorph between two Magmas " a " A: hom a " B&law is true by construction in Haskell An Idempotent Magma  a " a = a An Invertible Magma " a " T: inv a " T&law is true by construction in Haskell A Commutative Magma  a " b = b " a An Associative Magma (a " b) " c = a " (b " c)A Unital Magma unit " a = a a " unit = aA  -https://en.wikipedia.org/wiki/Magma_(algebra)Magma is a tuple (T,") consisting of a type a, anda function (") :: T -> T -> T&The mathematical laws for a magma are:2" is defined for all possible pairs of type T, and7" is closed in the set of all possible values of type Tor, more tersly, " a, b " T: a " b " TFThese laws are true by construction in haskell: the type signature of magma. and the above mathematical laws are synonyms.see 8http://chris-taylor.github.io/blog/2013/02/25/xor-trick/     None& !"&-23459:;<=?@DFHJLOQRT[\]^abc +which creates a nice alternative for negate?a nice Lattice, but the types explode the instance requirements3Replaces the Bounded in base. Is this a good idea? SemilatticeBottomedTopped!P's just to avoid name clashes#4Equal to, Less than, Greater than, Not comparable to( conversionkPOrdh !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijk !"#$%&'(!"#$%&' (T !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijkSafe% !"&-23459:;<=?@DFHJLOQRT[\]^abc l AdditiveGroup  a - a = zero negate a = zero - a negate a + a = zeronNon-commutative right minuspNon-commutative left minusr>Additive is commutative, unital and associative under addition  a + b = b + a (a + b) + c = a + (b + c)  zero + a = a  a + zero = atAdditiveMonoidaluAdditiveIdempotent a `plus` a == avAdditiveHomomorphic " a " A: plushom a " B&law is true by construction in HaskellxAdditiveInvertible " a " A: negate a " A&law is true by construction in HaskellzAdditiveCommutative a `plus` b == b `plus` a{AdditiveAssociative .(a `plus` b) `plus` c == a `plus` (b `plus` c)|AdditiveUnital %zero `plus` a == a a `plus` zero == a~4 is used for the additive magma to distinguish from s, which, by convention, implies commutativityElmnopqrstuvwxyz{|}~lmnopqrstuvwxyz{|}~~|}{zxyvwutrsnopqlm=lmnopqrstuvwxyz{|}~m6o6q6s6Unsafe% !"&-23459:;<=?@DFHJLOQRT[\]^abc MultiplicativeGroup  a / a = one recip a = one / a recip a * a = oneNon-commutative right divideNon-commutative left divideJMultiplicative is commutative, associative and unital under multiplication  a * b = b * a (a * b) * c = a * (b * c)  one * a = a  a * one = aMultiplicativeMonoidalMultiplicativeHomomorphic " a " A: timeshom a " B&law is true by construction in HaskellMultiplicativeInvertible " a " A: recip a " A&law is true by construction in HaskellMultiplicativeCommutative a `times` b == b `times` aMultiplicativeAssociative 2(a `times` b) `times` c == a `times` (b `times` c)MultiplicativeUnital %one `times` a == a a `times` one == a: is used for the multiplicative magma to distinguish from , which, by convention, implies commutativity>67777None% !"&-23459:;<=?@DFHJLOQRT[\]^abc5MultiplicativeGroupBasis element by element division6MultiplicativeBasis element by element multiplication2AdditiveGroupBasis element by element subtraction*AdditiveBasis element by element addition 7767None% !"&-23459:;<=?@DFHJLOQRT[\]^abc Distribution a * (b + c) == a * b + a * c (a + b) * c == a * c + b * cNone% !"&-23459:;<=?@DFHJLOQRT[\]^abchCRing is a Commutative Ring. It arises often due to * being defined as only multiplicative commutative.Ring a semiring          None% !"&-23459:;<=?@DFHJLOQRT[\]^abcPproviding the concepts of infinity and NaN, thus moving away from error throwingUquotient fields explode constraints if they are polymorphed to emit general integralsExpField%Field& prints as Infinity' prints as  `-Infinity` !"#$%&'()*+,-./012 !$#"%&'% !"#$&' !"#$%&'()*+,-./012 None% !"&-23459:;<=?@DFHJLOQRT[\]^abc3distance between numbers5`This should probably be split off into some sort of alternative Equality logic, but to what end?8bNormed is a current wart on the NumHask api, causing all sorts of runaway constraint boiler-plate.:*abs and signnum are warts on the standard Num> class, and are separated here to provide a cleaner structure.=utf ???3456789:;<=>?@ABCDEFGHIJKLMNOP 3456789:<;= 3489:;<567=3456789:;<=>?@ABCDEFGHIJKLMNOP=4 None% !"&-23459:;<=?@DFHJLOQRT[\]^abcQ fromIntegerS*toInteger and fromInteger as per the base Num, instance is problematic for numbers with a BasisUIntegral /b == zero || b * (a `div` b) + (a `mod` b) == aV#truncates towards negative infinityY,This splitting away of fromInteger from the 2 instance tends to increase constraint boier-plateQRSTUVWXYZ[\]^_`a QRSTUVWXY UVWXSTQRY QRSTUVWXYZ[\]^_`aV7W7 None' !"&+-23459:;<=?@DFHJLOQRT[\]^abcb TensorAlgebraftensorial tomfoolerygHilbertiBanachkMultiplicativeGroupModulenMultiplicativeModuleqAdditiveGroupModuletAdditiveModulebcdefghijklmnopqrstuvwxyz{|}bcdefghijklmnopqrstuvtuvqrsnopklmijghfbcdebcdefghijklmnopqrstuvwxyz{|} c8f8h8l7m7o7p7r6s6u6v6None% !"&-23459:;<=?@DFHJLOQRT[\]^abcb      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !"#$%&'(lmnopqrstuvwxyz{|}~ !$#"%&'3456789:<;=QRSTUVWXYbcdefghijklmnopqrstuv None% !"&-23459:;<=?@DFHJLOQRT[\]^abc&ToDo: integrate with Naperian instance#~!~~ ~ None& !"&,-23459:;<=?@DFHJLOQRT[\]^abc6used to get sensible arbitrary instances of SomeVectorza one-dimensional array where shape is specified at the value level Use this to avoid type-level hasochism by demoting a  with a one-dimensional array where shape is specified at the type level The main purpose of this, beyond safe typing, is to supply the Representable instance with an initial object. A Boxed c is used underneath for efficient slicing, but this may change or become polymorphic in the future.convert from a  to a convert from a  to a  with no shape checkconvert from a  to a , checking shape pads with } if needed  None' !"&+,-23459:;<=?@DFHJLOQRT[\]^abc;just used to get sensible arbitrary instances of SomeMatrixa two-dimensional array where shape is specified at the value level as a '(Int,Int)' Use this to avoid type-level hasochism by demoting a  with a two-dimensional array where shape is specified at the type level The main purpose of this, beyond safe typing, is to supply the Representable instance with an initial object. A single Boxed c is used underneath for efficient slicing, but this may change or become polymorphic in the future.convert from a  to a convert from a  to a  with no shape checkconvert from a  to a , checking shape.conversion from a double Vector representation convert a  to a column  convert a  to a row convert a row  to a convert a column  to a extract a row from a  as a extract a column from a  as a matrix multiplication for a from nested listfrom flat list !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDE F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x v y z { | } ~                                                                                          !"#$%&'()*+,-,./012345464748494:4;4<4=>?>@>A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S/T/UVWXYZ[\]^]_>`>a>b>c>d>e>f>ghi/j/k,l,m,n,o,p,q,r,s,t,u,v,w,x,y/z/{/|}~///                                                !  "  #  $  %  &  '  (  )  *  +  ,  -  .  /  0  1  2  3  4  5  6  7  8  9  :  ;  <  =  =  >,?,@,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,[,\,],^,_,`,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,{,|,},~,,,,,,,,,,,,,,,///////////////////444444>>1111111 1 1 1 1 11 !"#"$"%"&"'"(")"*"+,-./.012131415161718191:1;1<1=1>1>1?1?1@1@1A1A1B1B1C1C1D1D1E1EFGFHFIJKLMNOPQRSTUVWXYZ[Z\Z]Z^Z^Z_Z_Z`Z`ZaZaZbZbZcZcZdZeZfZgZhZiZjZkZlZmZnopopoqrstuvwxyz{|}~Z@,,     /////// !"#$%&'()*+,-./.0.1.2.3.4.5.6789:;]<=>=?=@=A=B=C=D=E=F=GHIJKLMNOPQRSTUVWXYZ[\]^_``ab>c>d>efghijkilminoipqirstuvtuwtuxtuytuz{|}~~~{{{{{{{{{{{{{{{{{~~~~~VVVV                        ! " # $ % & ' ( ( )*$numhask-0.0.6-9zg3A8kQmkbJq6CeIqemkJNumHask.Algebra.MagmaNumHask.Algebra.OrderingNumHask.Algebra.AdditiveNumHask.Algebra.MultiplicativeNumHask.Algebra.BasisNumHask.Algebra.DistributionNumHask.Algebra.RingNumHask.Algebra.FieldNumHask.Algebra.MetricNumHask.Algebra.IntegralNumHask.Algebra.ModuleNumHask.NaperianNumHask.VectorNumHask.MatrixNumHask.ExamplesNumHask.Prelude Data.VectorVectorAbelianGroupLoop CMonoidalMonoidal Isomorphicisomorph Homomorphichom Idempotent Invertibleinv Commutative AssociativeUnitalunitMagma⊕ groupSwap$fHomomorphicaaNegatednegatedLatticeInfSup/\\/Bounded SemilatticeBottomedbottomToppedtopPOrdpcompare POrderingPEQPLTPGTPNCord2pord$fLatticeDouble$fSemilatticeInfDouble$fSemilatticeSupDouble$fIsomorphicInfDoubleSupDouble$fIsomorphicSupDoubleInfDouble$fHomomorphicInfDoubleSupDouble$fHomomorphicSupDoubleInfDouble$fIdempotentInfDouble$fIdempotentSupDouble$fCommutativeInfDouble$fCommutativeSupDouble$fAssociativeSupDouble$fAssociativeInfDouble$fMagmaSupDouble$fMagmaInfDouble$fLatticeFloat$fSemilatticeInfFloat$fSemilatticeSupFloat$fIsomorphicInfFloatSupFloat$fIsomorphicSupFloatInfFloat$fHomomorphicInfFloatSupFloat$fHomomorphicSupFloatInfFloat$fIdempotentInfFloat$fIdempotentSupFloat$fCommutativeInfFloat$fCommutativeSupFloat$fAssociativeSupFloat$fAssociativeInfFloat$fMagmaSupFloat$fMagmaInfFloat$fLatticeInteger$fSemilatticeInfInteger$fSemilatticeSupInteger $fIsomorphicInfIntegerSupInteger $fIsomorphicSupIntegerInfInteger!$fHomomorphicInfIntegerSupInteger!$fHomomorphicSupIntegerInfInteger$fIdempotentInfInteger$fIdempotentSupInteger$fCommutativeInfInteger$fCommutativeSupInteger$fAssociativeSupInteger$fAssociativeInfInteger$fMagmaSupInteger$fMagmaInfInteger $fLatticeInt$fSemilatticeInfInt$fSemilatticeSupInt$fIsomorphicInfIntSupInt$fIsomorphicSupIntInfInt$fHomomorphicInfIntSupInt$fHomomorphicSupIntInfInt$fIdempotentInfInt$fIdempotentSupInt$fCommutativeInfInt$fCommutativeSupInt$fAssociativeSupInt$fAssociativeInfInt $fMagmaSupInt $fMagmaInfInt $fBoundedBool$fBottomedBool $fToppedBool $fBoundedInt $fBottomedInt $fToppedInt$fPOrda AdditiveGroup-AdditiveRightCancellative-~AdditiveLeftCancellative~-Additive+AdditiveMonoidalAdditiveIdempotentAdditiveHomomorphicplushomAdditiveInvertiblenegateAdditiveCommutativeAdditiveAssociativeAdditiveUnitalzero AdditiveMagmaplus$fAdditiveGroupComplex$fAdditiveGroupInteger$fAdditiveGroupInt$fAdditiveGroupFloat$fAdditiveGroupDouble$fAdditiveComplex$fAdditiveBool$fAdditiveInteger $fAdditiveInt$fAdditiveFloat$fAdditiveDouble$fAdditiveMonoidalComplex$fAdditiveMonoidalBool$fAdditiveMonoidalInteger$fAdditiveMonoidalInt$fAdditiveMonoidalFloat$fAdditiveMonoidalDouble$fAdditiveIdempotentBool$fAdditiveHomomorphicaa$fAdditiveInvertibleComplex$fAdditiveInvertibleBool$fAdditiveInvertibleInteger$fAdditiveInvertibleInt$fAdditiveInvertibleFloat$fAdditiveInvertibleDouble$fAdditiveCommutativeComplex$fAdditiveCommutativeBool$fAdditiveCommutativeInteger$fAdditiveCommutativeInt$fAdditiveCommutativeFloat$fAdditiveCommutativeDouble$fAdditiveAssociativeComplex$fAdditiveAssociativeBool$fAdditiveAssociativeInteger$fAdditiveAssociativeInt$fAdditiveAssociativeFloat$fAdditiveAssociativeDouble$fAdditiveUnitalComplex$fAdditiveUnitalBool$fAdditiveUnitalInteger$fAdditiveUnitalInt$fAdditiveUnitalFloat$fAdditiveUnitalDouble$fAdditiveMagmaComplex$fAdditiveMagmaBool$fAdditiveMagmaInteger$fAdditiveMagmaInt$fAdditiveMagmaFloat$fAdditiveMagmaDoubleMultiplicativeGroup/MultiplicativeRightCancellative/~MultiplicativeLeftCancellative~/Multiplicative*MultiplicativeMonoidalMultiplicativeHomomorphictimeshomMultiplicativeInvertiblerecipMultiplicativeCommutativeMultiplicativeAssociativeMultiplicativeUnitaloneMultiplicativeMagmatimes$fMultiplicativeGroupComplex$fMultiplicativeGroupFloat$fMultiplicativeGroupDouble$fMultiplicativeComplex$fMultiplicativeBool$fMultiplicativeInteger$fMultiplicativeInt$fMultiplicativeFloat$fMultiplicativeDouble$fMultiplicativeMonoidalComplex$fMultiplicativeMonoidalBool$fMultiplicativeMonoidalInteger$fMultiplicativeMonoidalInt$fMultiplicativeMonoidalFloat$fMultiplicativeMonoidalDouble$fMultiplicativeHomomorphicaa!$fMultiplicativeInvertibleComplex$fMultiplicativeInvertibleFloat $fMultiplicativeInvertibleDouble"$fMultiplicativeCommutativeComplex$fMultiplicativeCommutativeBool"$fMultiplicativeCommutativeInteger$fMultiplicativeCommutativeInt $fMultiplicativeCommutativeFloat!$fMultiplicativeCommutativeDouble"$fMultiplicativeAssociativeComplex$fMultiplicativeAssociativeBool"$fMultiplicativeAssociativeInteger$fMultiplicativeAssociativeInt $fMultiplicativeAssociativeFloat!$fMultiplicativeAssociativeDouble$fMultiplicativeUnitalComplex$fMultiplicativeUnitalBool$fMultiplicativeUnitalInteger$fMultiplicativeUnitalInt$fMultiplicativeUnitalFloat$fMultiplicativeUnitalDouble$fMultiplicativeMagmaComplex$fMultiplicativeMagmaBool$fMultiplicativeMagmaInteger$fMultiplicativeMagmaInt$fMultiplicativeMagmaFloat$fMultiplicativeMagmaDoubleMultiplicativeGroupBasis./.MultiplicativeBasis.*.AdditiveGroupBasis.-. AdditiveBasis.+.$fMultiplicativeGroupBasisra$fMultiplicativeBasisra$fAdditiveGroupBasisra$fAdditiveBasisra Distribution$fDistributionComplex$fDistributionBool$fDistributionInteger$fDistributionInt$fDistributionFloat$fDistributionDoubleCRingRingSemiring$fCRingComplex$fCRingInteger $fCRingInt $fCRingFloat $fCRingDouble $fRingComplex $fRingInteger $fRingInt $fRingFloat $fRingDouble$fSemiringComplex$fSemiringBool$fSemiringInteger $fSemiringInt$fSemiringFloat$fSemiringDouble BoundedFieldmaxBoundminBoundnanisNaN QuotientFieldroundceilingfloor^^ExpFieldexploglogBase**sqrtFieldinfinity neginfinity$fBoundedFieldComplex$fBoundedFieldDouble$fBoundedFieldFloat$fQuotientFieldDouble$fQuotientFieldFloat$fExpFieldComplex$fExpFieldFloat$fExpFieldDouble$fFieldComplex $fFieldFloat $fFieldDoubleMetricdistanceEpsilonnearZero aboutEqualNormedsizeSignedsignabs≈$fMetricComplexa$fMetricIntegerInteger$fMetricIntInt$fMetricFloatFloat$fMetricDoubleDouble$fEpsilonComplex$fEpsilonInteger $fEpsilonInt$fEpsilonFloat$fEpsilonDouble$fNormedComplexa$fNormedIntegerInteger$fNormedIntInt$fNormedFloatFloat$fNormedDoubleDouble$fSignedInteger $fSignedInt $fSignedFloat$fSignedDouble FromInteger fromInteger ToInteger toIntegerIntegraldivmoddivMod fromIntegral$fToIntegerInteger$fToIntegerInt$fFromIntegerInteger$fFromIntegerInt$fFromIntegerFloat$fFromIntegerDouble$fIntegralInteger $fIntegralInt TensorProduct>< timesleft timesrightHilbert<.>Banach normalizeMultiplicativeGroupModule.//.MultiplicativeModule.**.AdditiveGroupModule.--.AdditiveModule.++.$fTensorProductr $fHilbertra $fBanachra$fMultiplicativeGroupModulera$fMultiplicativeModulera$fAdditiveGroupModulera$fAdditiveModuleraNaperianHasShapeShapeshapendim $fIntegralf $fMetricfa $fEpsilonf $fNormedfa $fSignedf$fBoundedFieldf $fExpFieldf$fFieldf$fCRingf$fRingf $fSemiringf$fDistributionf$fMultiplicativeGroupf$fMultiplicativef$fMultiplicativeMonoidalf$fMultiplicativeHomomorphicaf$fMultiplicativeInvertiblef$fMultiplicativeCommutativef$fMultiplicativeAssociativef$fMultiplicativeUnitalf$fMultiplicativeMagmaf$fAdditiveGroupf $fAdditivef$fAdditiveMonoidalf$fAdditiveHomomorphicaf$fAdditiveInvertiblef$fAdditiveCommutativef$fAdditiveAssociativef$fAdditiveUnitalf$fAdditiveMagmafShapeVunshapeV SomeVectortoVec someVectorunsafeToVectortoVector$fArbitrarySomeVector$fArbitraryShapeV$fIsListSomeVector$fIsListVector$fShowSomeVector$fHasShapeSomeVector$fRepresentableVector$fDistributiveVector$fArbitraryVector $fShowVector$fNaperianVector$fHasShapeVector$fFunctorVector $fEqVector$fFoldableVector $fOrdVector$fFunctorSomeVector$fEqSomeVector$fFoldableSomeVector$fOrdSomeVectorShapeMunshapeM SomeMatrixMatrix flattenMatrix someMatrixunsafeToMatrixtoMatrix unsafeFromVVtoColtoRowfromColfromRowrowcolmmult$fArbitrarySomeMatrix$fArbitraryShapeM$fIsListSomeMatrix$fIsListMatrix$fShowSomeMatrix$fHasShapeSomeMatrix$fRepresentableMatrix$fDistributiveMatrix$fArbitraryMatrix $fShowMatrix$fNaperianMatrix$fHasShapeMatrix$fFunctorMatrix $fEqMatrix$fFoldableMatrix$fFunctorSomeMatrix$fEqSomeMatrix$fFoldableSomeMatrix SupDouble InfDoubleSupFloatInfFloat SupInteger InfIntegerSupIntInfInt TensorRepbaseGHC.Base++ghc-primGHC.PrimseqGHC.Listfilterzip Data.Tuplefstsnd otherwise integer-gmpGHC.Integer.Type mkInteger smallInteger integerToWord integerToInt plusInteger timesInteger minusInteger negateInteger eqInteger# neqInteger# absInteger signumInteger leInteger# gtInteger# ltInteger# geInteger#compareInteger quotInteger remInteger divInteger modInteger divModIntegerquotRemIntegerfloatFromIntegerdoubleFromIntegerencodeFloatIntegerencodeDoubleInteger andInteger orInteger xorIntegercomplementInteger shiftLInteger shiftRInteger wordToIntegerdecodeDoubleInteger$ GHC.FloatrationalToFloatrationalToDoubleGHC.Real realToFrac Control.MonadguardjoinGHC.EnumEnumenumFrom enumFromThenenumFromThenTo enumFromTofromEnumtoEnumsuccpred GHC.ClassesEq==/=Floatingpisincostanasinacosatansinhcoshtanhasinhacoshatanhlog1pexpm1log1pexplog1mexp Fractional fromRationalMonad>>=>>returnFunctorfmap<$GHC.NumNumsignumOrd>=minmax><<=compareGHC.ReadReadReal toRational RealFloat floatRadix floatDigits floatRange decodeFloat encodeFloatexponent significand scaleFloat isInfiniteisDenormalizedisNegativeZeroisIEEEatan2RealFracproperFractiontruncateGHC.ShowShowData.Typeable.InternalTypeable Data.StringIsString Applicativepure<*>*><* Data.FoldableFoldabletoListfoldrfoldMapnulllengthfoldlfoldl'maximumminimumelemfoldfoldr'Data.Traversable TraversabletraversemapM sequenceAsequence GHC.GenericsGenericfromto ConstructorconName conFixity conIsRecordSelectorselNameselSourceUnpackednessselSourceStrictnessselDecidedStrictnessGHC.OverloadedLabelsIsLabel fromLabelData.Semigroup Semigroup<>sconcatstimesMonoidmemptymappendmconcat GHC.TypesBoolFalseTrueCharDouble#DoubleD#Float#FloatF#IntGHC.IntInt8Int16Int32Int64IntegerMaybeJustNothingOrderingLTEQGTRatio:%Rational RealWorldIOWordGHC.WordWord8Word16Word32Word64GHC.PtrPtrFunPtr Data.EitherEitherLeftRightType ConstraintV1U1K1unK1M1unM1:+::*:Rec0D1C1S1 CoercibleGHC.Stack.Types CallStackTypeRepGHC.STSTliftMeither mtl-2.2.1-BLKBelFsPB3BoFeSWSOYj6Control.Monad.State.Class MonadStategetstateputControl.Monad.Reader.Class MonadReaderreaderlocalaskGHC.IO.Handle.TypesHandle GHC.Conc.SyncforkOnWithUnmaskforkIOWithUnmaskforkOnControl.ConcurrentforkOSThreadId$async-2.1.1.1-8yywY4inVGRLJSCg60gBXjControl.Concurrent.AsyncreplicateConcurrently_replicateConcurrently concurrently_forConcurrently_mapConcurrently_forConcurrentlymapConcurrently concurrentlyrace_racelink2link waitBothSTMwaitBothwaitEitherCancelwaitEitherSTM_ waitEither_ waitEitherSTM waitEitherwaitEitherCatchCancelwaitEitherCatchSTMwaitEitherCatch waitAnyCancel waitAnySTMwaitAnywaitAnyCatchCancelwaitAnyCatchSTM waitAnyCatch cancelWithuninterruptibleCancelcancelpollSTM waitCatchSTMwaitSTMpoll waitCatchwaitwithAsyncOnWithUnmaskwithAsyncWithUnmask withAsyncOnwithAsyncBound withAsyncasyncOnWithUnmaskasyncWithUnmaskasyncOn asyncBoundasyncAsync asyncThreadId ConcurrentlyrunConcurrentlyclamp word2Float word2Double powerDouble tanhDouble coshDouble sinhDouble atanDouble acosDouble asinDouble tanDouble cosDouble sinDouble sqrtDouble logDouble expDouble float2Double double2FloatleDoubleltDoublegeDoublegtDouble negateDouble divideDouble timesDouble minusDouble plusDouble powerFloat tanhFloat coshFloat sinhFloat atanFloat acosFloat asinFloattanFloatcosFloatsinFloat sqrtFloatlogFloatexpFloatleFloatltFloatgeFloatgtFloat negateFloat divideFloat timesFloat minusFloat plusFloat fromRat''integerLogBaseexpts10 maxExpt10exptsexptmaxExptminExptfromRat'roundToformatRealFloatAltformatRealFloat isFloatNaNisFloatInfiniteisFloatDenormalizedisFloatNegativeZero isFloatFinite isDoubleNaNisDoubleInfiniteisDoubleDenormalizedisDoubleNegativeZeroisDoubleFinite log1pDouble expm1Double log1pFloat expm1FloatFFFormat FFExponentFFFixed FFGenericintegralEnumFromThenTointegralEnumFromTointegralEnumFromThenintegralEnumFromgcdWord'gcdInt'^^%^^^%^numericEnumFromThenTonumericEnumFromTonumericEnumFromThennumericEnumFrom notANumber ratioPrec1 ratioPrec overflowErrorratioZeroDenominatorError divZeroErrorreduce predError succError fromEnumError toEnumErrorboundedEnumFromThenboundedEnumFromGHC.Float.RealFracMethods int2Float float2Int int2Double double2Int hashInteger neqInteger eqInteger leInteger ltInteger gtInteger geIntegertestBitIntegereqFloateqDoublemaxIntminIntData.Functor.IdentityIdentity runIdentity Data.VoidvacuousabsurdVoid Data.Complexphase magnitudepolarcismkPolar conjugateimagPartrealPartComplex:+ System.Exitdie exitSuccess exitFailureexitWithSystem.EnvironmentgetArgsGHC.ExecutionStackshowStackTrace getStackTraceGHC.ExecutionStack.InternalSrcLoc sourceFile sourceLine sourceColumnLocation objectName functionNamesrcLocData.Bifunctor BifunctorfirstsecondbimapControl.Monad.IO.ClassMonadIOliftIOthreadWaitWriteSTMthreadWaitReadSTMthreadWaitWritethreadWaitReadrunInUnboundThreadrunInBoundThreadisCurrentThreadBoundforkOSWithUnmask forkFinallyrtsSupportsBoundThreadsControl.Concurrent.QSemN signalQSemN waitQSemNnewQSemNQSemNControl.Concurrent.QSem signalQSemwaitQSemnewQSemQSemControl.Concurrent.ChanwriteList2ChangetChanContents isEmptyChan unGetChandupChanreadChan writeChannewChanChanmfilterunless replicateM_ replicateMfoldM_foldM zipWithM_zipWithM mapAndUnzipMforever<=<>=>filterMfoldMapDefault fmapDefault mapAccumR mapAccumLforMforControl.ApplicativeoptionalZipList getZipList System.IOwithFileGHC.IO.Handle.FDopenFilestderrstdin GHC.Conc.IO threadDelayControl.Concurrent.MVar mkWeakMVaraddMVarFinalizermodifyMVarMaskedmodifyMVarMasked_ modifyMVar modifyMVar_withMVarMaskedwithMVarswapMVar GHC.Stack callStackControl.ExceptionallowInterruptcatchesControl.Exception.BasebracketOnErrorbracket_finallybracket onExceptiontryJusttry mapException handleJusthandle catchJustcatchPatternMatchFail RecSelError RecConError RecUpdError NoMethodError TypeErrorNonTerminationNestedAtomically Text.Read readMaybe readEitherreadsalwaysalwaysSucceedscatchSTMthrowSTMorElseretry atomicallymkWeakThreadIdthreadCapability myThreadId killThreadsetNumCapabilitiesgetNumCapabilitiesforkIOSTMstdoutGHC.IO.ExceptionioErrorasyncExceptionFromExceptionasyncExceptionToExceptionBlockedIndefinitelyOnMVarBlockedIndefinitelyOnSTMDeadlockAllocationLimitExceededAssertionFailedSomeAsyncExceptionAsyncException StackOverflow HeapOverflow ThreadKilled UserInterruptArrayExceptionIndexOutOfBoundsUndefinedElementExitCode ExitSuccess ExitFailureData.Functor.ConstConstgetConstForeign.StorableStorablefindnotElem minimumBy maximumByallanyorand concatMapconcatmsumasum sequence_ sequenceA_forM_mapM_for_ traverse_foldlMfoldrM Data.MonoidDualgetDualEndoappEndoAllgetAllAnygetAnySumgetSumProduct getProductFirstgetFirstLastgetLastAltgetAltFixityPrefixInfixMetaMetaDataMetaConsMetaSelGHC.IOevaluateuninterruptibleMaskuninterruptibleMask_maskmask_getMaskingState interruptiblestToIOFilePath MaskingStateUnmaskedMaskedInterruptibleMaskedUninterruptible IOException GHC.ExceptionprettyCallStack prettySrcLoc Exception toException fromException ErrorCallErrorCallWithLocationArithExceptionOverflow UnderflowLossOfPrecision DivideByZeroDenormalRatioZeroDenominator Data.TypeableeqTcasttypeRep byteSwap64 byteSwap32 byteSwap16 GHC.IO.IOModeIOModeReadMode WriteMode AppendMode ReadWriteModeData.Type.Coercion coerceWithCoercionisRightisLeftpartitionEithersrightsleftsData.Type.Equality gcastWithcastWithtranssym:~:Refl Data.ProxyProxy Data.OldListunfoldrsortBysort permutations subsequencestailsinitsgroup transpose intercalate intersperse isPrefixOfData.Ord comparingDownfromRat floatToDigits Data.BitstoIntegralSizedpopCountDefaulttestBitDefault bitDefaultBits.&..|.xor complementshiftrotatezeroBitsbitsetBitclearBit complementBittestBit bitSizeMaybebitSizeisSignedshiftLshiftRrotateLrotateRpopCount FiniteBits finiteBitSizecountLeadingZeroscountTrailingZeros Data.Functiononfix Data.Functorvoid$><$>runSTfixSTlcmgcdoddeven denominator numerator%GHC.CharchrzipWithreversebreaksplitAtdroptake dropWhile takeWhilecycle replicaterepeatiteratescanrscanl Data.MaybemapMaybe catMaybes listToMaybe maybeToList fromMaybe isNothingisJustmaybeswapuncurrycurry GHC.Stack.CCScurrentCallStacksubtractGHC.MVar isEmptyMVar tryReadMVar tryPutMVar tryTakeMVarputMVarreadMVartakeMVarnewMVar newEmptyMVarMVarasTypeOfflip.constordapliftM5liftM4liftM3liftM2when=<<liftA3liftA2liftA<**> Alternativeempty<|>somemany MonadPlusmzeromplus SomeException getCallStack HasCallStack&&||notbytestring-0.10.8.1Data.ByteString.Internal ByteStringcontainers-0.5.7.1Data.IntMap.BaseIntMapData.IntSet.BaseIntSet Data.Map.BaseMap Data.SequenceSeq Data.Set.BaseSetdeepseq-1.4.2.0Control.DeepSeqforce$!!deepseqNFDatarnftransformers-0.5.2.0Control.Monad.Trans.ClassliftControl.Monad.Error.Class MonadError throwError catchErrorasksgetsmodifyControl.Monad.Trans.ExceptExceptTExcept runExcept runExceptTControl.Monad.Trans.ReaderReaderT runReaderTReader runReaderControl.Monad.Trans.State.LazyStateT runStateTStaterunState evalState execState withState evalStateT execStateT#text-1.2.2.2-KC7dWoG09dA1F6jKj5GSqhData.Text.InternalTextData.Text.EncodingdecodeUtf8With decodeUtf8 decodeUtf8' encodeUtf8 Data.Text.IOreadFile writeFile appendFileinteract getContentsgetLineData.Text.LazytoStrict fromStrict"stm-2.4.4.1-JQn4hNPyYjP5m9AcbI88VeControl.Monad.STMcheck"safe-0.3.15-2Yd45VWFfdcKqKyispOifYSafetailMaytailDeftailSafeinitMayinitDefinitSafeheadMaylastMayheadDeflastDef foldr1May foldl1MayatMayatDef'protolude-0.1.10-ArpXtD9YS25Cx5qs23OvGQ ProtoludeshowguardedAguardedpassforeachthrowTothrowIOprintapplyNunsnocunconsmapidentity&LText LByteString<<*>>liftAA2purereitherAorEmptyorAltDebug undefinednotImplementedtraceIdtraceM traceShowM traceShowId traceShowerrortraceIOtraceputLTextputTextPrintputStrputStrLnPanicpanic FatalErrormsg<$!>liftM2'liftM' concatMapM ExceptionstryIOnotehushConvtoSLtoSLeniencyStrictLenient StringConvstrConvBase$!guardMifMunlessMwhenMbool maybeToEither maybeToLeft maybeToRight rightToMaybe leftToMaybeListsumproductlistordNubsortOnhead&adjunctions-4.3-9lUmUzx9pBEEnoHInNeXViData.Functor.RepliftR3liftR2 extractRep extendRep duplicateRep extendedRep duplicatedRep extractRepBy extendRepByduplicateRepBy distributeRepapReplocalRepaskRepmzipRep mzipWithRepmfixRepbindReppureRepfmapRep tabulated RepresentableReptabulateindexCounCo