units-defs 1.0.1 → 1.1
raw patch · 8 files changed
+88/−21 lines, 8 filesdep +template-haskelldep ~units
Dependencies added: template-haskell
Dependency ranges changed: units
Files
- CHANGES.md +8/−0
- Data/Metrology/SI/Mono.hs +14/−2
- Data/Metrology/SI/MonoTypes.hs +0/−10
- Data/Metrology/SI/Parser.hs +29/−0
- Data/Metrology/SI/Poly.hs +3/−1
- Data/Metrology/SI/Prefixes.hs +11/−1
- Data/Metrology/SI/Units.hs +15/−1
- units-defs.cabal +8/−6
CHANGES.md view
@@ -1,3 +1,11 @@+Version 1.1+-------------++* Added `si` parser.+* Moved `DefaultUnitOfDim` instances from `SI.MonoTypes` to `SI.Mono`. This allows+ client code to import the monomorphic types without getting these instances. But,+ it may mean that your imports have to change.+ Version 1.0.1 -------------
Data/Metrology/SI/Mono.hs view
@@ -1,3 +1,5 @@+{-# LANGUAGE TypeOperators, TypeFamilies #-}+ ----------------------------------------------------------------------------- -- | -- Module : Data.Metrology.SI.Mono@@ -15,11 +17,21 @@ module Data.Metrology.SI.Mono ( module Data.Metrology.SI.MonoTypes, module Data.Metrology.SI.Units,- module Data.Metrology.SI.Prefixes+ module Data.Metrology.SI.Prefixes,+ module Data.Metrology.SI.Parser ) where import Data.Metrology.SI.MonoTypes import Data.Metrology.SI.Units import Data.Metrology.SI.Prefixes-+import qualified Data.Metrology.SI.Dims as D+import Data.Metrology+import Data.Metrology.SI.Parser +type instance DefaultUnitOfDim D.Length = Meter+type instance DefaultUnitOfDim D.Mass = Kilo :@ Gram+type instance DefaultUnitOfDim D.Time = Second+type instance DefaultUnitOfDim D.Current = Ampere+type instance DefaultUnitOfDim D.Temperature = Kelvin+type instance DefaultUnitOfDim D.AmountOfSubstance = Mole+type instance DefaultUnitOfDim D.LuminousIntensity = Lumen
Data/Metrology/SI/MonoTypes.hs view
@@ -16,17 +16,7 @@ module Data.Metrology.SI.MonoTypes where import Data.Metrology-import Data.Metrology.SI.Units-import Data.Metrology.SI.Prefixes ( Kilo ) import qualified Data.Metrology.SI.Dims as D--type instance DefaultUnitOfDim D.Length = Meter-type instance DefaultUnitOfDim D.Mass = Kilo :@ Gram-type instance DefaultUnitOfDim D.Time = Second-type instance DefaultUnitOfDim D.Current = Ampere-type instance DefaultUnitOfDim D.Temperature = Kelvin-type instance DefaultUnitOfDim D.AmountOfSubstance = Mole-type instance DefaultUnitOfDim D.LuminousIntensity = Lumen type Length = MkQu_D D.Length type Mass = MkQu_D D.Mass
+ Data/Metrology/SI/Parser.hs view
@@ -0,0 +1,29 @@+{-# LANGUAGE TemplateHaskell #-}++-----------------------------------------------------------------------------+-- |+-- Module : Data.Metrology.SI.Parser+-- Copyright : (C) 2013 Richard Eisenberg+-- License : BSD-style (see LICENSE)+-- Maintainer : Richard Eisenberg (eir@cis.upenn.edu)+-- Stability : experimental+-- Portability : non-portable+--+-- Defines a quasi-quoting parser for unit expressions. Writing, say,+-- @[si| m/s^2 |]@ produces @(Meter :/ (Second :^ sTwo))@. A larger+-- example is+--+-- > ke :: Energy+-- > ke = 5 % [si| N km |] -- 5 Newton-kilometers+--+-- See `Data.Metrology.Parser` for more information about the syntax+-- of these unit expressions.+-----------------------------------------------------------------------------++module Data.Metrology.SI.Parser where++import Data.Metrology.Parser+import Data.Metrology.SI.Prefixes+import Data.Metrology.SI.Units++makeQuasiQuoter "si" siPrefixes siUnits
Data/Metrology/SI/Poly.hs view
@@ -18,7 +18,8 @@ SI, module Data.Metrology.SI.PolyTypes, module Data.Metrology.SI.Prefixes,- module Data.Metrology.SI.Units+ module Data.Metrology.SI.Units,+ module Data.Metrology.SI.Parser ) where import Data.Metrology.SI.PolyTypes@@ -26,6 +27,7 @@ import Data.Metrology.SI.Units import qualified Data.Metrology.SI.Dims as D import Data.Metrology+import Data.Metrology.SI.Parser type SI = MkLCSU '[ (D.Length, Meter) , (D.Mass, Kilo :@ Gram)
Data/Metrology/SI/Prefixes.hs view
@@ -1,4 +1,4 @@-{-# LANGUAGE TypeOperators #-}+{-# LANGUAGE TypeOperators, TemplateHaskell #-} ----------------------------------------------------------------------------- -- |@@ -14,6 +14,7 @@ module Data.Metrology.SI.Prefixes where +import Language.Haskell.TH ( Name ) import Data.Metrology -- | 10^1@@ -215,3 +216,12 @@ yocto :: unit -> Yocto :@ unit yocto = (Yocto :@)++-- | A list of the names of all prefix types. Useful with+-- 'Data.Metrology.Parser.makeQuasiQuoter'.+siPrefixes :: [Name]+siPrefixes =+ [ ''Deca, ''Hecto, ''Kilo, ''Mega, ''Giga, ''Tera, ''Peta, ''Exa+ , ''Zetta, ''Yotta, ''Deci, ''Centi, ''Milli, ''Micro, ''Nano+ , ''Pico, ''Femto, ''Atto, ''Zepto, ''Yocto+ ]
Data/Metrology/SI/Units.hs view
@@ -1,4 +1,4 @@-{-# LANGUAGE TypeFamilies, TypeOperators, PatternSynonyms #-}+{-# LANGUAGE TypeFamilies, TypeOperators, PatternSynonyms, TemplateHaskell #-} ----------------------------------------------------------------------------- -- |@@ -31,6 +31,8 @@ import Data.Metrology.SI.Dims import Data.Metrology.SI.Prefixes ( Kilo, Centi ) +import Language.Haskell.TH ( Name )+ data Meter = Meter instance Unit Meter where type BaseUnit Meter = Canonical@@ -250,3 +252,15 @@ type Tonne = Ton pattern Tonne = Ton++-- | A list of the names of all unit types. Useful with+-- 'Data.Metrology.Parser.makeQuasiQuoter'.+siUnits :: [Name]+siUnits =+ [ ''Meter, ''Gram, ''Second, ''Minute, ''Hour, ''Day, ''Ampere+ , ''Kelvin, ''Mole, ''Candela, ''Hertz, ''Liter, ''Newton, ''Pascal+ , ''Joule, ''Watt, ''Coulomb, ''Volt, ''Farad, ''Ohm, ''Siemens+ , ''Weber, ''Tesla, ''Henry, ''Lumen, ''Lux, ''Becquerel, ''Gray+ , ''Sievert, ''Katal, ''Hectare, ''Ton+ ]+
units-defs.cabal view
@@ -1,5 +1,5 @@ name: units-defs-version: 1.0.1+version: 1.1 cabal-version: >= 1.10 synopsis: Definitions for use with the units package homepage: http://github.com/goldfirere/units-defs@@ -13,7 +13,6 @@ license-file: LICENSE build-type: Simple description:- This package provides system definitions for use with the separate @units@ package. See the individual modules for details. @@ -23,12 +22,13 @@ source-repository this type: git location: https://github.com/goldfirere/units-defs.git- tag: v1.0.1+ tag: v1.1 library build-depends: base >= 4.7 && < 5,- units >= 2.0 && < 3+ units >= 2.1 && < 3,+ template-haskell exposed-modules: Data.Metrology.SI, Data.Metrology.SI.Mono,@@ -37,9 +37,11 @@ Data.Metrology.SI.MonoTypes, Data.Metrology.SI.Units, Data.Metrology.SI.Dims,- Data.Metrology.SI.PolyTypes+ Data.Metrology.SI.PolyTypes,+ Data.Metrology.SI.Parser -- Data.Metrology.Imperial.Types -- Data.Metrology.Imperial.Units default-language: Haskell2010-+ default-extensions: TemplateHaskell+ ghc-options: -Wall