{-# LANGUAGE TemplateHaskell, TypeFamilies, TypeOperators #-} ----------------------------------------------------------------------------- -- | -- Module : Data.Units.Imperial.Nautical -- Copyright : (C) 2013 Richard Eisenberg -- License : BSD-style (see LICENSE) -- Maintainer : Richard Eisenberg (rae@cs.brynmawr.edu) -- Stability : experimental -- Portability : non-portable -- -- As per current UK legislation, the nautical mile is defined as 1853 m, -- not 1852 (as it was previously). -- -- 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.Nautical where import Data.Metrology.TH import Data.Units.SI import Language.Haskell.TH declareDerivedUnit "NauticalMile" [t| Metre |] 1853 (Just "NM") declareDerivedUnit "Cable" [t| NauticalMile |] 0.1 (Just "cable") declareDerivedUnit "Fathom" [t| Cable |] 0.01 (Just "ftm") -- | Nautical lengths: All units above nauticalLengths :: [Name] nauticalLengths :: [Name] nauticalLengths = [ ''Fathom, ''Cable, ''NauticalMile ]