$+      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ None&The datatype for type-level integers. Less-than comparison Helper function for division Divide two integers Negate an integer Multiply two integers Subtract two integers Add two integers Subtract one from an integer Add one to an integer  Convert a  to an  )This is the singleton value representing Zero at the term level and F at the type level, simultaneously. Used for raising units to powers. Add one to a singleton Z. !Subtract one from a singleton Z. Convert a singleton Z to an Int. )  !+  !&  !None"5Division of the exponents in a dimension by a scalar #;Multiplication of the exponents in a dimension by a scalar $negate a list of DimSpecs %negate a single DimSpec &%Subtract exponents in two dimensions ESubtract exponents in two dimensions, assuming the lists are ordered  similarly. '.Adds corresponding exponents in two dimension FAdds corresponding exponents in two dimension, assuming the lists are  ordered similarly. (Take a  [DimSpec *] and remove any DimSpecs with an exponent of 0 ) Check if two  [DimSpec *]#s should be considered to be equal Helper function in * *QReorders a to be the in the same order as b, putting entries not in b at the end   Reorder [A 1, B 2] [B 5, A 2] ==> [B 2, A 1]  Reorder [A 1, B 2, C 3] [C 2, A 8] ==> [C 3, A 1, B 2]  Reorder [A 1, B 2] [B 4, C 1, A 9] ==> [B 2, A 1]  Reorder x x ==> x  Reorder x [] ==> x  Reorder [] x ==> [] +(Extract s lst): pulls the DimSpec that matches s out of lst, returning a 9 diminished list and, possibly, the extracted DimSpec.   Extract A [A, B, C] ==> ([B, C] , Just A  Extract D [A, B, C] ==> ([A, B, C] , Nothing) ,0Do these DimSpecs represent the same dimension? -HThis will only be used at the kind level. It holds a dimension with its  exponent. "#$%&'()*+,-."#$%&'()*+,-."#$%&'()*+,-. None/,Exponentiate a dimension type to an integer 00Divide two dimension types to produce a new one 1@Multiply two dimension types to produce a new one. For example:  type Velocity = Length %/ Time 23Dim adds a dimensional annotation to its base type n. This is the 0 representation for all dimensioned quantities. 4*Add two compatible dimensioned quantities 5/Subtract two compatible dimensioned quantities 6$Multiply two dimensioned quantities 7"Divide two dimensioned quantities 8>Raise a dimensioned quantity to a power known at compile time 9 Take the n'?th root of a dimensioned quantity, where n is known at compile  time :@Check if one dimensioned quantity is less than a compatible one ;CCheck if one dimensioned quantity is greater than a compatible one <LCheck if one dimensioned quantity is less than or equal to a compatible one =OCheck if one dimensioned quantity is greater than or equal to a compatible one >;Compare two compatible dimensioned quantities for equality ?=Compare two compatible dimensioned quantities for inequality Square a dimensioned quantity @/Take the square root of a dimensioned quantity A-Take the cube root of a dimensioned quantity B,Multiply a dimensioned quantity by a scalar /0123456789:;<=>#If the difference between the next $ two arguments are less than this # amount, they are considered equal ?#If the difference between the next $ two arguments are less than this # amount, they are considered equal @AB/0123456789:;<=>?@AB/0123456789:;<=>?@AB(C) 2013 Richard EisenbergBSD-style (see LICENSE)%Richard Eisenberg (eir@cis.upenn.edu) experimental non-portableNone2323(C) 2013 Richard EisenbergBSD-style (see LICENSE)%Richard Eisenberg (eir@cis.upenn.edu) experimental non-portableNone"#$%&'()*+,-.22-.,+*)('&%$#" None This is like E, but deals with H. It is necessary  to be able to define  in the right way. CEssentially, a constraint that checks if a conversion ratio can be  calculated for a BaseUnit of a unit. Helper function in  *Get the canonical unit from a given unit.  For example: CanonicalUnit Foot = Meter %Is the argument the special datatype H? Is this unit a canonical unit? C:Make a dimensioned quantity with a custom numerical type. DGMake a dimensioned quantity type capable of storing a value of a given  unit. This uses a  ( for storage of the value. For example:  type Length = MkDim Meter EEClass of units. Make an instance of this class to define a new unit. FCThe base unit of this unit: what this unit is defined in terms of. I For units that are not defined in terms of anything else, the base unit  should be H.  FThe internal list of dimensions for a dimensioned quantity built from  this unit. GThe conversion ratio from the base unit to this unit. 2 If left out, a conversion ratio of 1 is assumed.  For example:   instance Unit Foot where  type BaseUnit Foot = Meter  conversionRatio _ = 0.3048 Implementations should never examine their argument! =Compute the conversion from the underlying canonical unit to E this one. A default is provided that multiplies together the ratios 6 of all units between this one and the canonical one. H6Dummy type use just to label canonical units. It does not have a  E instance.  CDEF GH   CDEF GH  CDEFG H  NoneI"A class for user-defined prefixes JHThis should return the desired multiplier for the prefix being defined.  This function must not inspect its argument. KJMultiply a conversion ratio by some constant. Used for defining prefixes. M/Raise a unit to a power, known at compile time O%Divide two units to get another unit Q(Multiply two units to get another unit.  For example: #type MetersSquared = Meter :* Meter IJKLMNOPQR IJKLMNOPQR IJKLMNOPQR (C) 2013 Richard EisenbergBSD-style (see LICENSE)%Richard Eisenberg (eir@cis.upenn.edu) experimental non-portableNone(C) 2013 Richard EisenbergBSD-style (see LICENSE)%Richard Eisenberg (eir@cis.upenn.edu) experimental non-portableNone S,The type of unitless dimensioned quantities  This is an instance of Num, though Haddock doesn' t show it. T-The unit for unitless dimensioned quantities V Extracts a Double+ from a dimensioned quantity, expressed in  the given unit. For example:  inMeters :: Length -> Double  inMeters x = dimIn x Meter WInfix synonym for V X?Creates a dimensioned quantity in the given unit. For example:  height :: Length  height = dimOf 2.0 Meter YInfix synonym for X Z<The number 1, expressed as a unitless dimensioned quantity. [=The number 0, polymorphic in its dimension. Use of this will " often require a type annotation. \3Dimension-safe cast. See the README for more info. ]:Convert a raw number into a unitless dimensioned quantity STUVWXYZ[\]O  !/01456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]O45678B:;<=>?9@AZ[\VWXYQROPMNKLIJ10/EFGDCHTUS]  ! STUVWXYZ[\](C) 2013 Richard EisenbergBSD-style (see LICENSE)%Richard Eisenberg (eir@cis.upenn.edu) experimental non-portableNoneh^_`abcdefghijklmnopqrstuvwxyz{|}~ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKL4^_`abcdefghijklmnopqrstuvwxyz{|}~4~|}z{xyvwturspqnolmjkhifgdebc`a^_N^_`abcdefghijklmnopqrstuvwxyz{|}~ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKL(C) 2013 Richard EisenbergBSD-style (see LICENSE)%Richard Eisenberg (eir@cis.upenn.edu) experimental non-portableNone%%%%(C) 2013 Richard EisenbergBSD-style (see LICENSE)%Richard Eisenberg (eir@cis.upenn.edu) experimental non-portableNone10^-24 10^-21 10^-18 10^-15 10^-12 10^-9 10^-6 10^-3 10^-2 10^-1 10^24 10^21 10^18 10^15 10^12 10^9 10^6 10^3 10^2 10^1 dMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrst<<PMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrst (C) 2013 Richard EisenbergBSD-style (see LICENSE)%Richard Eisenberg (eir@cis.upenn.edu) experimental non-portableNone^_`abcdefghijklmnopqrstuvwxyz{|}~u !"#$%&'()*+,-./0123456789:;< = > ? @ @ A B C D E F G H I J K L M N O P Q R S T U V W X X Y Y Z Z [ [\]]^_`abcdeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~               !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQ units-1.1Data.DimensionsData.Dimensions.PolyData.Dimensions.UnsafeData.Dimensions.SI.UnitsData.Dimensions.SI.TypesData.Dimensions.SI.PrefixesData.Dimensions.ZData.Dimensions.DimSpecData.Dimensions.DimData.Dimensions.UnitsData.Dimensions.UnitCombinatorsData.Dimensions.ShowData.Dimensions.SIZPSZeroMFiveMFourMThreeMTwoMOneFiveFourThreeTwoOne#/NegZ#*#-#+PredSuccpZeropOnepTwopThreepFourpFivepMOnepMTwopMThreepMFourpMFivepSuccpPred@/@*NegListNegDim@-@+ Normalize@~ReorderExtract$=DimSpecD%^%/%*Dim.+.-.*./.^nthRoot.<.>.<=.>=dimEqdimNeqdimSqrt dimCubeRoot*.MkGenDimMkDimUnitBaseUnitconversionRatio Canonical UnitPrefix multiplier:@:^:/:*ScalarNumberdimIn#dimOf%unityzerodimscalarKatalSievertGray BecquerelLuxLumenHenryTeslaWeberSiemensOhmFaradVoltCoulombWattJoulePascalNewtonHertzCandelaMoleKelvinAmpereSecondGramMeterMomentumCatalyticActivityKerma Illuminance LuminousFlux InductanceMagneticFluxDensity MagneticFlux Conductance Resistance CapacitanceElectricPotentialChargePowerEnergyPressureForce Frequency Luminance ConcentrationMagneticStrengthCurrentDensitySpecificVolumeSurfaceDensityDensity Wavenumber AccelerationVelocityVolumeArea LuminosityQuantity TemperatureCurrentTimeMassLengthYoctoZeptoAttoFemtoPicoNanoMicroMilliCentiDeciYottaZettaExaPetaTeraGigaMegaKiloHectoDecadecahectokilomegagigaterapetaexazettayottadecicentimillimicronanopicofemtoattozeptoyocto<ZDivzToIntghc-prim GHC.TypesIntszToIntSZEquals_1627410285$fSingKindZKProxySPSSSZero@@-@@+Reorder'dimSqr HasConvRatiocanonicalConvRatioBaseHasConvRatioCanonicalUnit' CanonicalUnitCheckCanonical IsCanonicalDouble DimSpecsOf baseUnitRatio$$fHasConvRatioFalsenoncanonical_unit $fHasConvRatioTruecanonical_unit$fUnit:@$fUnit:^$fUnit:/$fUnit:* ShowDimSpecshowDims showDimSpec $fShowDim$fShowDimSpec:$fShowDimSpec[] $fUnitNumber $fShowKatal $fUnitKatal $fShowSievert $fUnitSievert $fShowGray $fUnitGray$fShowBecquerel$fUnitBecquerel $fShowLux $fUnitLux $fShowLumen $fUnitLumen $fShowHenry $fUnitHenry $fShowTesla $fUnitTesla $fShowWeber $fUnitWeber $fShowSiemens $fUnitSiemens $fShowOhm $fUnitOhm $fShowFarad $fUnitFarad $fShowVolt $fUnitVolt $fShowCoulomb $fUnitCoulomb $fShowWatt $fUnitWatt $fShowJoule $fUnitJoule $fShowPascal $fUnitPascal $fShowNewton $fUnitNewton $fShowHertz $fUnitHertz $fShowCandela $fUnitCandela $fShowMole $fUnitMole $fShowKelvin $fUnitKelvin $fShowAmpere $fUnitAmpere $fShowSecond $fUnitSecond $fShowGram $fUnitGram $fShowMeter $fUnitMeter $fShowYocto$fUnitPrefixYocto $fShowZepto$fUnitPrefixZepto $fShowAtto$fUnitPrefixAtto $fShowFemto$fUnitPrefixFemto $fShowPico$fUnitPrefixPico $fShowNano$fUnitPrefixNano $fShowMicro$fUnitPrefixMicro $fShowMilli$fUnitPrefixMilli $fShowCenti$fUnitPrefixCenti $fShowDeci$fUnitPrefixDeci $fShowYotta$fUnitPrefixYotta $fShowZetta$fUnitPrefixZetta $fShowExa$fUnitPrefixExa $fShowPeta$fUnitPrefixPeta $fShowTera$fUnitPrefixTera $fShowGiga$fUnitPrefixGiga $fShowMega$fUnitPrefixMega $fShowKilo$fUnitPrefixKilo $fShowHecto$fUnitPrefixHecto $fShowDeca$fUnitPrefixDeca