{-# LANGUAGE TemplateHaskell, TypeFamilies, TypeOperators #-} ----------------------------------------------------------------------------- -- | -- Module : Data.Units.US.Liquid -- Copyright : (C) 2013 Richard Eisenberg -- License : BSD-style (see LICENSE) -- Maintainer : Richard Eisenberg (rae@cs.brynmawr.edu) -- Stability : experimental -- Portability : non-portable -- -- This module defines liquid volume measures as used in the USA. -- Note that liquid volumes in the USA differ both from solid volumes -- in the USA and from liquid volumes in the UK. -- -- Included are all units mentioned here: -- -- Where possible, conversion rates have been independently verified -- at a US government website. However, Wikipedia's base is /much/ -- better organized than any government resource immediately available. -- The US government references used are as follows: -- -- ----------------------------------------------------------------------------- module Data.Units.US.Liquid where import Data.Metrology import Data.Metrology.TH import Data.Units.US.Misc import Language.Haskell.TH declareDerivedUnit "Gallon" [t| Inch :^ Three |] 231 (Just "gal") declareDerivedUnit "FluidOunce" [t| Gallon |] (1/128) (Just "floz") declareDerivedUnit "Gill" [t| FluidOunce |] 4 (Just "gi") declareDerivedUnit "Cup" [t| FluidOunce |] 8 (Just "cp") declareDerivedUnit "Pint" [t| FluidOunce |] 16 (Just "pt") declareDerivedUnit "Quart" [t| Gallon |] (1/4) (Just "qt") declareDerivedUnit "Teaspoon" [t| FluidOunce |] (1/6) (Just "tsp") declareDerivedUnit "Tablespoon" [t| Teaspoon |] 3 (Just "Tbsp") declareDerivedUnit "Shot" [t| Tablespoon |] 3 (Just "jig") declareDerivedUnit "Minim" [t| Teaspoon |] (1/80) (Just "min") declareDerivedUnit "Dram" [t| Minim |] 60 (Just "fldr") declareDerivedUnit "Hogshead" [t| Gallon |] 63 (Just "hogshead") declareDerivedUnit "Barrel" [t| Hogshead |] (1/2) (Just "bbl") declareDerivedUnit "OilBarrel" [t| Gallon |] 42 (Just "bbl") -- | As shown on Wikipedia: commonLiquidMeasures :: [Name] commonLiquidMeasures = [ ''Teaspoon, ''Tablespoon, ''FluidOunce, ''Cup, ''Pint , ''Quart, ''Gallon ] -- | Includes the rest of the measures in this file. otherLiquidMeasures :: [Name] otherLiquidMeasures = [ ''Minim, ''Dram, ''Shot, ''Gill, ''Barrel , ''OilBarrel, ''Hogshead ]