'      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~           ! " # $ % & ' ( ) * + , - . / 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 { | } ~             Safe* !"&+,-23459:;<=?@DFHJLOQRT[\]^abc"Could possibly be integrated with  Representable instance creationNone( !"&*+-23459:;<=?@DFHJLOQRT[\]^abc MultiplicativeGroup  a / a = one recip a = one / a recip a * a = oneNon-commutative right divideNon-commutative left divide JMultiplicative is commutative, associative and unital under multiplication  a * b = b * a (a * b) * c = a * (b * c)  one * a = a  a * one = a MultiplicativeMonoidal MultiplicativeHomomorphic " a " A: timeshom a " B&law is true by construction in HaskellMultiplicativeInvertible " a " A: recip a " A&law is true by construction in HaskellMultiplicativeAssociative 2(a `times` b) `times` c == a `times` (b `times` c)MultiplicativeCommutative a `times` b == b `times` aMultiplicativeUnital %one `times` a == a a `times` one == a: is used for the multiplicative magma to distinguish from  , which, by convention, implies commutativity?  !"#$%&'()*+,-./0123456789:;<=>?@AB    7   !"#$%&'()*+,-./0123456789:;<=>?@AB77 7 7Safe( !"&*+-23459:;<=?@DFHJLOQRT[\]^abcCCAn Abelian Group is associative, unital, invertible and commutativeD-A Group is associative, unital and invertibleEA Loop is unital and invertibleF9A CMonoidal Magma is commutative, associative and unital.G+A Monoidal Magma is associative and unital.H4major conceptual clashidge with many other librariesJA Homomorph between two Magmas " a " A: hom a " B&law is true by construction in HaskellLAn Idempotent Magma  a " a = aMAn Invertible Magma " a " T: inv a " T&law is true by construction in HaskellOA Commutative Magma  a " b = b " aPAn Associative Magma (a " b) " c = a " (b " c)QA Unital Magma unit " a = a a " unit = aSA  -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.Usee 8http://chris-taylor.github.io/blog/2013/02/25/xor-trick/CDEFGHIJKLMNOPQRSTUVCDEFGHIJKLMNOPQRSTUSTQRPOMNLJKHIGFEDUCCDEFGHIJKLMNOPQRSTUVNone( !"&*+-23459:;<=?@DFHJLOQRT[\]^abc W+which creates a nice alternative for negateY?a nice Lattice, but the types explode the instance requirements^3Replaces the Bounded in base. Is this a good idea?_ Semilattice`BottomedbToppeddP's just to avoid name clashesf4Equal to, Less than, Greater than, Not comparable tok conversionPOrdhWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~WXY[Z\]^_`abcdefghijkdefghijbc`a^WX_YZ[\]kTWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~None( !"&*+-23459:;<=?@DFHJLOQRT[\]^abc  AdditiveGroup  a - a = zero negate a = zero - a negate a + a = zeroNon-commutative right minusNon-commutative left minus>Additive is commutative, unital and associative under addition  a + b = b + a (a + b) + c = a + (b + c)  zero + a = a  a + zero = aAdditiveMonoidalAdditiveIdempotent a `plus` a == aAdditiveHomomorphic " a " A: plushom a " B&law is true by construction in HaskellAdditiveInvertible " a " A: negate a " A&law is true by construction in HaskellAdditiveCommutative a `plus` b == b `plus` aAdditiveAssociative .(a `plus` b) `plus` c == a `plus` (b `plus` c)AdditiveUnital %zero `plus` a == a a `plus` zero == a4 is used for the additive magma to distinguish from , which, by convention, implies commutativityF>6666None( !"&*+-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[\]^abcField None( !"&*+-23459:;<=?@DFHJLOQRT[\]^abcExpField#ExpRing&(^) !"#$%&'()*+,!" #%$&#$%& !"  !"#$%&'()*+, None( !"&*+-23459:;<=?@DFHJLOQRT[\]^abc- fromInteger/*toInteger and fromInteger as per the base Num, instance is problematic for numbers with a Basis1Integral /b == zero || b * (a `div` b) + (a `mod` b) == a2#truncates towards negative infinity5,This splitting away of fromInteger from the  2 instance tends to increase constraint boier-plate-./0123456789:;<=> -./012345 1234/0-.5 -./0123456789:;<=>2737 None( !"&*+-23459:;<=?@DFHJLOQRT[\]^abc ?Zquotient fields also explode constraints if they are polymorphed to emit general integralsDdistance between numbersF`This should probably be split off into some sort of alternative Equality logic, but to what end?IbNormed is a current wart on the NumHask api, causing all sorts of runaway constraint boiler-plate.K/abs and signnum are also warts on the standard Num> class, and are separated here to provide a cleaner structure.NPproviding the concepts of infinity and NaN, thus moving away from error throwingS prints as InfinityT prints as  `-Infinity`Uutf ???0?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmn?@ABCDEFGHIJKMLNPORQSTUNOPQRSTDEIJKLMFGHU?@ABC"?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnU4 None( !"&*+-23459:;<=?@DFHJLOQRT[\]^abco TensorAlgebrastensorial tomfoolerytHilbertvBanachxMultiplicativeGroupModule{MultiplicativeModule~AdditiveGroupModuleAdditiveModuleopqrstuvwxyz{|}~opqrstuvwxyz{|}~~{|}xyzvwtusopqropqrstuvwxyz{|}~ p8s8u8y7z7|7}76666None* !"&+,-23459:;<=?@DFHJLOQRT[\]^abc an n-dimensional array where shape is specified at the value level as an '[Int]' Use this to avoid type-level hasochism by demoting a  with an n-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.extract shape from type-level convert a  to a , losing the type level shape convert a  to a  with no checks on shape. convert a  to a , check for shape equality.7convert the top layer of a SomeTensor to a [SomeTensor]\arbitraryly-nested list conversion to fit in with OverloadedLists needs some complex parsingfrom flat list  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.'the shape value demoted from type-levelconvert 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.'the shape value demoted from type-levelconvert 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 listNone% !"&-23459:;<=?@DFHJLOQRT[\]^abc      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ CDEFGHIJKLMNOPQRSTUWXY[Z\]^_`abcdefghijk  !" #%$&-./012345?@ABCDEFGHIJKMLNPORQSTUopqrstuvwxyz{|}~None' !"&,-23459:;<=?@DFHJLOQRT[\]^abcNone% !"&-23459:;<=?@DFHJLOQRT[\]^abc CDEFGHIJKLMNOPQRSTUWXY[Z\]^_`abcdefghijk  !" #%$&-./012345?@ABCDEFGHIJKMLNPORQSTUopqrstuvwxyz{|}~ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./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 { | } ~                                          !"#$%&'()*+,-./0123456789:9;<=>?@ABACADAEAFAGAHAIAJ KL KM KN9O9P9Q9R9S9T9U9V9W9X9Y9Z9[9\9]9^9_9`<a<bcdefghijkjl Km Kn Ko Kp Kq Kr Ks Ktuv<w<x9y9z9{9|9}9~99999999<<<                 <<<       !                                                 !  "  #  $  %  %  &'()'(*'(+'(,'-.'-/'-0'-123454647894:;<=;<>;<?;<@;<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;<n;<o9p9q9r9s9t9u9v9w9x9y9z9{9|9}9~9999999999999999999999999999999999999999999999999999999999999999<<<<<<<<<<<<<<<<<<<AAAAAA K K      8888888888 ! " # $%&%'%(%)*+*,*-*.*/*0*1*2*3>4>5>6>7>8>9>:>;><>=>>>?>@ABCDEFGHGIGIGJKLMNMOMPQRSTSUSVSWSXSYSZS[S\]^_`_abcbdbebfbgbhbibjbkblbmbnbobobpbpbqbqbrbrbsbsbtbtbububvbvwxwywz4{4|4}4~44444444444M    M  99 !"!#!$!%!&!'!(!)!*!+!,!-!.!/!0!1!2!3!4!5!6!7!8!9!:!;!<!=!>?@?ABCBDBEFG<H<I<J<K<L<M<NOP Q R S T U V W X Y Z [ \ ] ^_`_a_b_c_d_e_f_ghijkljmnonpnqnrnsntnunvnwnxyz{|}~ K K K''''-'('(              ccc c!"#"$"%&'&(&)&*&+&,&-./0123456789:;:<:=:>:?:@A$numhask-0.0.2-2rpsm4kiUwMEhsWvbZiBmHNumHask.HasShapeNumHask.Algebra.MultiplicativeNumHask.Algebra.MagmaNumHask.Algebra.OrderingNumHask.Algebra.AdditiveNumHask.Algebra.BasisNumHask.Algebra.DistributionNumHask.Algebra.RingNumHask.Algebra.FieldNumHask.Algebra.ExponentialNumHask.Algebra.IntegralNumHask.Algebra.MetricNumHask.Algebra.ModuleNumHask.TensorNumHask.VectorNumHask.Matrix Data.VectorVectorNumHask.PreludeNumHask.ExamplesNumHask.AlgebraHasShapeShapeshapendimMultiplicativeGroup/MultiplicativeRightCancellative/~MultiplicativeLeftCancellative~/Multiplicative*MultiplicativeMonoidalMultiplicativeHomomorphictimeshomMultiplicativeInvertiblerecipMultiplicativeAssociativeMultiplicativeCommutativeMultiplicativeUnitaloneMultiplicativeMagmatimes$fMultiplicativeGroupr$fMultiplicativeGroupFloat$fMultiplicativeGroupDouble$fMultiplicativer$fMultiplicativeBool$fMultiplicativeInteger$fMultiplicativeInt$fMultiplicativeFloat$fMultiplicativeDouble$fMultiplicativeMonoidalr$fMultiplicativeMonoidalBool$fMultiplicativeMonoidalInteger$fMultiplicativeMonoidalInt$fMultiplicativeMonoidalFloat$fMultiplicativeMonoidalDouble$fMultiplicativeHomomorphicaa$fMultiplicativeHomomorphicar$fMultiplicativeInvertibler$fMultiplicativeInvertibleFloat $fMultiplicativeInvertibleDouble$fMultiplicativeAssociativer$fMultiplicativeAssociativeBool"$fMultiplicativeAssociativeInteger$fMultiplicativeAssociativeInt $fMultiplicativeAssociativeFloat!$fMultiplicativeAssociativeDouble$fMultiplicativeCommutativer$fMultiplicativeCommutativeBool"$fMultiplicativeCommutativeInteger$fMultiplicativeCommutativeInt $fMultiplicativeCommutativeFloat!$fMultiplicativeCommutativeDouble$fMultiplicativeUnitalr$fMultiplicativeUnitalBool$fMultiplicativeUnitalInteger$fMultiplicativeUnitalInt$fMultiplicativeUnitalFloat$fMultiplicativeUnitalDouble$fMultiplicativeMagmar$fMultiplicativeMagmaBool$fMultiplicativeMagmaInteger$fMultiplicativeMagmaInt$fMultiplicativeMagmaFloat$fMultiplicativeMagmaDoubleAbelianGroupLoop 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$fAdditiveGroupr$fAdditiveGroupInteger$fAdditiveGroupInt$fAdditiveGroupFloat$fAdditiveGroupDouble $fAdditiver$fAdditiveBool$fAdditiveInteger $fAdditiveInt$fAdditiveFloat$fAdditiveDouble$fAdditiveMonoidalr$fAdditiveMonoidalBool$fAdditiveMonoidalInteger$fAdditiveMonoidalInt$fAdditiveMonoidalFloat$fAdditiveMonoidalDouble$fAdditiveIdempotentBool$fAdditiveHomomorphicar$fAdditiveHomomorphicaa$fAdditiveInvertibler$fAdditiveInvertibleBool$fAdditiveInvertibleInteger$fAdditiveInvertibleInt$fAdditiveInvertibleFloat$fAdditiveInvertibleDouble$fAdditiveCommutativer$fAdditiveCommutativeBool$fAdditiveCommutativeInteger$fAdditiveCommutativeInt$fAdditiveCommutativeFloat$fAdditiveCommutativeDouble$fAdditiveAssociativer$fAdditiveAssociativeBool$fAdditiveAssociativeInteger$fAdditiveAssociativeInt$fAdditiveAssociativeFloat$fAdditiveAssociativeDouble$fAdditiveUnitalr$fAdditiveUnitalBool$fAdditiveUnitalInteger$fAdditiveUnitalInt$fAdditiveUnitalFloat$fAdditiveUnitalDouble$fAdditiveMagmar$fAdditiveMagmaBool$fAdditiveMagmaInteger$fAdditiveMagmaInt$fAdditiveMagmaFloat$fAdditiveMagmaDoubleMultiplicativeGroupBasis./.MultiplicativeBasis.*.AdditiveGroupBasis.-. AdditiveBasis.+.$fMultiplicativeGroupBasisra$fMultiplicativeBasisra$fAdditiveGroupBasisra$fAdditiveBasisra Distribution$fDistributionr$fDistributionBool$fDistributionInteger$fDistributionInt$fDistributionFloat$fDistributionDoubleCRingRingSemiring$fCRingr$fCRingInteger $fCRingInt $fCRingFloat $fCRingDouble$fRingr $fRingInteger $fRingInt $fRingFloat $fRingDouble $fSemiringr$fSemiringBool$fSemiringInteger $fSemiringInt$fSemiringFloat$fSemiringDoubleField$fFieldr $fFieldFloat $fFieldDoubleExpFieldsqrtexplogExpRinglogBase**^ $fExpFieldr$fExpFieldFloat$fExpFieldDouble $fExpRingr$fExpRingFloat$fExpRingDouble FromInteger fromInteger ToInteger toIntegerIntegraldivmoddivMod fromIntegral$fToIntegerInteger$fToIntegerInt$fFromIntegerInteger$fFromIntegerInt$fFromIntegerFloat$fFromIntegerDouble $fIntegralr$fIntegralInteger $fIntegralInt QuotientFieldroundceilingfloor^^MetricdistanceEpsilonnearZero aboutEqualNormedsizeSignedsignabs BoundedFieldmaxBoundminBoundnanisNaNinfinity neginfinity≈$fQuotientFieldDouble$fQuotientFieldFloat $fMetricra$fMetricIntegerInteger$fMetricIntInt$fMetricFloatFloat$fMetricDoubleDouble $fEpsilonr$fEpsilonInteger $fEpsilonInt$fEpsilonFloat$fEpsilonDouble $fNormedra$fNormedIntegerInteger$fNormedIntInt$fNormedFloatFloat$fNormedDoubleDouble $fSignedr$fSignedInteger $fSignedInt $fSignedFloat$fSignedDouble$fBoundedFieldr$fBoundedFieldDouble$fBoundedFieldFloat TensorProduct>< timesleft timesrightHilbert<.>Banach normalizeMultiplicativeGroupModule.//.MultiplicativeModule.**.AdditiveGroupModule.--.AdditiveModule.++.$fTensorProductr $fHilbertra $fBanachra$fMultiplicativeGroupModulera$fMultiplicativeModulera$fAdditiveGroupModulera$fAdditiveModulera SomeTensorTensor flattenTensor someTensorunsafeToTensortoTensorflatten1$fArbitrarySomeTensor$fArbitraryTensor$fArbitraryShapeT$fIsListTensor$fRepresentableTensor$fDistributiveTensor $fShowTensor$fShowSomeTensor$fHasShapeSomeTensor$fHasShapeTensor$fFunctorTensor $fEqTensor$fFoldableTensor $fShowShapeT $fEqShapeT$fFunctorSomeTensor$fEqSomeTensor$fFoldableSomeTensorShapeVunshapeV SomeVectortoVecshapeV someVectorunsafeToVectortoVector$fRepresentableVector$fDistributiveVector$fArbitraryVector$fArbitrarySomeVector$fArbitraryShapeV$fIsListSomeVector$fIsListVector $fShowVector$fShowSomeVector$fHasShapeVector$fHasShapeSomeVector$fFunctorVector $fEqVector$fFoldableVector $fOrdVector$fFunctorSomeVector$fEqSomeVector$fFoldableSomeVector$fOrdSomeVectorShapeMunshapeM SomeMatrixMatrix flattenMatrix someMatrixunsafeToMatrixtoMatrix unsafeFromVVtoColtoRowfromColfromRowrowcolmmult$fRepresentableMatrix$fDistributiveMatrix$fArbitraryMatrix$fArbitrarySomeMatrix$fArbitraryShapeM$fIsListSomeMatrix$fIsListMatrix $fShowMatrix$fShowSomeMatrix$fHasShapeMatrix$fHasShapeSomeMatrix$fFunctorMatrix $fEqMatrix$fFoldableMatrix$fFunctorSomeMatrix$fEqSomeMatrix$fFoldableSomeMatrix SupDouble InfDoubleSupFloatInfFloat SupInteger InfIntegerSupIntInfInt TensorRepshapeTfromListSomeTensorShapeTunshapeTindunfoldIunindshapeMbaseGHC.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.IntInt8Int16Int32Int64IntegerMaybeNothingJustOrderingLTEQGTRatio:%Rational RealWorldIOWordGHC.WordWord8Word16Word32Word64GHC.PtrPtrFunPtr Data.EitherEitherLeftRightType ConstraintV1U1K1unK1M1unM1:+::*:Rec0D1C1S1 CoercibleGHC.Stack.Types CallStackTypeRepGHC.STSTliftMeither)distributive-0.5.2-J1KYL3W47Ud448U0mmYiNXData.Distributive Distributivecollect distribute distributeMcollectM&adjunctions-4.3-AphfUOuuPZO4GYJIpx0pa2Data.Functor.RepliftR3liftR2 extractRep extendRep duplicateRep extendedRep duplicatedRep extractRepBy extendRepByduplicateRepBy distributeRepapReplocalRepaskRepmzipRep mzipWithRepmfixRepbindReppureRepfmapRep tabulated RepresentableReptabulateindexCounCo mtl-2.2.1-6qsR1PHUy5lL47Hpoa4jCMControl.Monad.State.Class MonadStategetstateputControl.Monad.Reader.Class MonadReaderreaderlocalaskGHC.IO.Handle.TypesHandle GHC.Conc.SyncforkOnWithUnmaskforkIOWithUnmaskforkOnControl.ConcurrentforkOSThreadId!async-2.1.1-xFiBzw9xoB8HPZAuxUY2oControl.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$!!deepseqNFDatarnf fmapCollectcomapM cotraversetransformers-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.1-9Yh8rJoh8fO2JMLWffT3QsData.Text.InternalTextData.Text.EncodingdecodeUtf8With decodeUtf8 decodeUtf8' encodeUtf8 Data.Text.IOreadFile writeFile appendFileinteract getContentsgetLineData.Text.LazytoStrict fromStrict"stm-2.4.4.1-4z2NRWnB0NIIUvSJsHW0kFControl.Monad.STMcheck"safe-0.3.14-ALdwhNEer7fKnF5VYCbXfHSafetailMaytailDeftailSafeinitMayinitDefinitSafeheadMaylastMayheadDeflastDef foldr1May foldl1MayatMayatDef'protolude-0.1.10-876FLXQyof6AoyOqRQRY4B ProtoludeshowguardedAguardedpassforeachthrowTothrowIOprintapplyNunsnocunconsmapidentity&LText LByteString<<*>>liftAA2purereitherAorEmptyorAltDebug undefinednotImplementedtraceIdtraceM traceShowM traceShowId traceShowerrortraceIOtraceputLTextputTextPrintputStrputStrLnPanicpanic FatalErrormsg<$!>liftM2'liftM' concatMapM ExceptionstryIOnotehushConvtoSLtoSLeniencyStrictLenient StringConvstrConvBase$!guardMifMunlessMwhenMbool maybeToEither maybeToLeft maybeToRight rightToMaybe leftToMaybeListsumproductlistordNubsortOnhead