content: {-# LANGUAGE PatternSynonyms #-}
  
  {- |
     Copyright  : Copyright (C) 2006-2018 Bjorn Buckwalter
     License    : BSD3
  
     Maintainer : bjorn@buckwalter.se
     Stability  : Stable
     Portability: GHC only
  
  This module provides types and functions for manipulating unit names.
  
  Please note that the details of the name representation may be less stable than the other APIs
  provided by this package, as new features using them are still being developed.
  
  -}
  module Numeric.Units.Dimensional.UnitNames
  (
    -- * Data Types
    UnitName, NameAtom, Prefix, PrefixName, Metricality(..),
    -- * Construction of Unit Names
    atom, applyPrefix, (*), (/), (^), product, reduce, grouped,
    -- * Standard Names
    baseUnitName, siPrefixes, nOne,
    -- * Inspecting Prefixes
    prefixName, scaleFactor,
    -- * Convenience Type Synonyms for Unit Name Transformations
    UnitNameTransformer, UnitNameTransformer2,
    -- * Forgetting Unwanted Phantom Types
    weaken, strengthen, relax,
    name_en, abbreviation_en, asAtomic
  )
  where
  
  import Numeric.Units.Dimensional.UnitNames.Internal
  import Numeric.Units.Dimensional.Variants
  import Prelude hiding ((*), (/), (^), product)
  