units-defs-2.2.1: Data/Units/Imperial/Length.hs
{-# LANGUAGE TemplateHaskell, TypeFamilies, TypeOperators #-}
-----------------------------------------------------------------------------
-- |
-- Module : Data.Units.Imperial.Length
-- Copyright : (C) 2013 Richard Eisenberg
-- License : BSD-style (see LICENSE)
-- Maintainer : Richard Eisenberg (rae@cs.brynmawr.edu)
-- Stability : experimental
-- Portability : non-portable
--
-- Due to the <https://en.wikipedia.org/wiki/International_yard_and_pound
-- International yard and pound agreement of 1959>, it so happens that
-- Imperial and US customary units of length have the same base (the
-- international yard at 0.9144 meters). However, if subdivisions are
-- generally the same, Imperial units feature multiples of the yard that
-- US customary ones generally don't (e.g. the Imperial furlong is defined
-- by reference to the international yard, not the US survey one).
--
-- Where possible, reference have been made to UK legislation. However,
-- Wikipedia's page is /much/ better organized than any government
-- resource immediately available.
--
-- The UK legislation used as references are as follows:
-- <http://www.legislation.gov.uk/ukpga/1985/72/enacted>
-- <http://www.legislation.gov.uk/uksi/1994/2867/schedule/part/VI/made>
-- <http://www.legislation.gov.uk/uksi/1995/1804/schedule/made>
-----------------------------------------------------------------------------
module Data.Units.Imperial.Length where
import Data.Metrology.TH
import qualified Data.Units.US.Misc as US
import Language.Haskell.TH
declareDerivedUnit "Thou" [t| US.Mil |] 1 (Just "th")
declareDerivedUnit "Inch" [t| US.Inch |] 1 (Just "in")
declareDerivedUnit "Foot" [t| US.Foot |] 1 (Just "ft")
declareDerivedUnit "Yard" [t| US.Yard |] 1 (Just "yd")
declareDerivedUnit "Chain" [t| Yard |] 22 (Just "ch")
declareDerivedUnit "Furlong" [t| Chain |] 10 (Just "fur")
declareDerivedUnit "Mile" [t| US.Mile |] 1 (Just "mi")
declareDerivedUnit "League" [t| Mile |] 3 (Just "lea")
declareDerivedUnit "Hand" [t| Inch |] 4 (Just "hand")
-- | Common lengths units: 'Foot', 'Inch', 'Yard', and 'Mile'
commonLengths :: [Name]
commonLengths = [ ''Foot, ''Inch, ''Yard, ''Mile ]
-- | Other lengths units: 'Thou', 'Hand', 'Chain', 'Furlong' and 'League'
otherLengths :: [Name]
otherLengths = [ ''Thou, ''Hand, ''Chain, ''Furlong, ''League ]