úÎP°Jª      Safe-InferredIView the source code for this declaration to see what units and prefixes  are defined. IThis string holds the definitions for units and prefixes. Base units are L defined by the name of the unit, the name of the base in brackets, and any @ aliases for the unit after that, all separated by equal signs: meter =  [length] = m@. Prefixes are defined by placing a dash after all identifiers, ' and providing a value for the prefix: milli- = 1e-3 = m-. Other units are  defined by using previously defined units in an expression: minute = 60 *  second = min. !The reason these definitions aren'%t placed in a text file is so you don't N have to operate your whole program in the IO monad. Theoretically, a user of N this package can create their own definitions file or modify this one, but a  mechanism for doing so hasn't been created yet. JThese definitions are taken almost verbatim from the Pint unit conversion @ library for the Python programming language. Check them out on   https://github.com/hgrecco/pintGitHub.  Safe-Inferred"Computation monad that propagates s. Some examples:  - computation :: QuantityComputation Quantity  computation = do  x <- fromString "mile/hr"  y <- unitsFromString "m/s"  convert x y Returns Right 0.44704 meter / second  - computation :: QuantityComputation Quantity  computation = do  x <- fromString "BADUNIT"  convertBase x Returns Left (UndefinedUnitError BADUNIT) Custom error type %Used when a string cannot be parsed. 4Used internally when defining units and a prefix is  already defined. 2Used internally when defining units and a unit is  already defined. 5Used when converting units that do not have the same 4 dimensionality (example: convert meter to second). -Used when trying to parse an undefined unit. $Combination of magnitude and units. !Numerical magnitude of quantity. $magnitude <$> fromString "100 N * m" Right 100.0  Units associated with quantity.  units <$> fromString "3.4 m/s^2"Right [meter,second ** -2.0] <Collection of SimpleUnits. Represents combination of simple  units. ,Representation of single unit. For example: "mm^2" is  represented as @ SimpleUnit { symbol = "meter", prefix = "milli", power = 2.0 } +String representation of a unit. Examples: meter, foot Used to show composite units. %Show a single unit, but prepend with  if negative *Sort units but put negative units at end. Quantity without definitions. ACombines equivalent units and removes units with powers of zero. *Inverts unit by negating the power field. Multiplies two quantities. Divides two quantities. (Exponentiates a quantity with a double. #Combine two Definitions structures 9!"#$%&'()*+,-./012345 6 789:;<=> ? @AB6!"#$%&'()*+,-./012345 6 789:;<=> ? !"#$%&'()* 1.+234/04,-45 6 789:;<=> ? @AB Safe-InferredCBConverts string to a Quantity using an expression grammar parser. DEFGCHIJKLMNOPQRSTUVDEFGCHIJKLMNOPQRSTUVDEFGCHIJKLMNOPQRSTUV Safe-InferredW@Parse multiline string of definitions (say, from a file) into a  list of definitions. XParse any definition line Y(Parse a line containing unit definition  Ex: minute = 60 s = min Z&Parse line containing base definition  Ex: meter = [length] = m [(Parse line containing prefix definition  Ex: milli- = 1e-3 = m- \Parse a symbol for a unit ]W^X_Y`aZb[cd\]W^X_Y`aZb[cd\]W^X_Y`aZb[cd\ Safe-Inferred !Convert quantity to given units. 3convert <$> fromString "m" <*> unitsFromString "ft"$Right (Right 3.280839895013123 foot)&Convert a quantity to its base units. #convertBase <$> fromString "newton"'Right 1000.0 gram meter / second ** 2.0e!Convert quantity to given units. f&Convert a quantity to its base units. g/Converts a composite unit to its base quantity h-Converts a simple unit to its base quantity. %Computes dimensionality of quantity. &dimensionality <$> fromString "newton" Right [length,mass,time ** -2.0]>Adds two quantities. Second quantity is converted to units of  first quantity. BSubtract two quantities. Second quantity is converted to units of  first quantity. iefghjk iefghjk iefghjk Safe-Inferredl#Computes intersection of two lists mnolpqrsmnolpqrsmnolpqrs Safe-Inferred/Create a Quantity by parsing a string. Uses an   for undefined units. fromString "25 m/s"Right 25.0 meter / secondfromString "fakeunit"$Left (UndefinedUnitError "fakeunit"))Parse units from a string. Equivalent to fmap units . fromString unitsFromString "N * s"Right [newton,second]tututu Safe-Inferred   v      !"#$%&'()*+,,-./012345678$9:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcKdefghijklmnopqrstuvwxyz{|quantities-0.1.0Data.Quantities.DefaultUnitsData.QuantitiesData.Quantities.DataData.Quantities.ExprParser Data.Quantities.DefinitionParserData.Quantities.ConvertData.Quantities.DefinitionsData.Quantities.ConstructorsdefaultDefStringQuantityComputation QuantityError ParserErrorPrefixAlreadyDefinedErrorUnitAlreadyDefinedErrorDimensionalityErrorUndefinedUnitErrorQuantity magnitudeunits CompositeUnit SimpleUnitmultiplyQuants divideQuants exptQuantsconvert convertBasedimensionality addQuantssubtractQuants fromStringunitsFromStringcompSymbol showCompUnit showCompUnit'baseGHC.Real/showSort baseQuant reduceUnitsinvertSimpleUnitunionDefinitions Definitionsbasessynonyms unitsListprefixes prefixValuesprefixSynonyms unitTypes DefinitionUnitDefinition defSymbolquantityBaseDefinitiondimBasePrefixDefinition defPrefixfactor defSynonymsdefssymbolprefixpowerfromDefinitions reduceUnits' removeZeros invertUnitsemptyDefinitions $fEqQuantity$fShowQuantity$fShowSimpleUnit parseExprmainreadExprspaces'parseExprQuant parseExpr' parseFactorparseExpparseNestedExpr parseExpOp parseFactorOpmulOpexpOp exptQuants'parseSymbolNum parseSymbol'parseNum parseNum'parseExponential timesSignreadDefinitionsparseDef parseDefLine parseBaseLineparsePrefixLine parseSymbolreadDefinitions'eol parseUnitDef parseSynonym parseBase parsePrefixparsePrefixSynonymconvert' convertBase'toBase simpleToBase unityQuantdimensionality' linearQuants checkDefined DefineMonadmakeDefinitions addDefinitionpreprocessQuantitypreprocessUnit prefixParser prefixParser'defaultDefinitionsd