{-# LANGUAGE TemplateHaskell, TypeFamilies, TypeOperators #-}

-----------------------------------------------------------------------------
-- |
-- Module      :  Data.Metrology.Units.PreciousMetals
-- Copyright   :  (C) 2013 Richard Eisenberg
-- License     :  BSD-style (see LICENSE)
-- Maintainer  :  Richard Eisenberg (rae@cs.brynmawr.edu)
-- Stability   :  experimental
-- Portability :  non-portable
--
-- Units used in the measure of precious metals.
-----------------------------------------------------------------------------

module Data.Units.PreciousMetals where

import Data.Metrology
import Data.Metrology.TH
import Data.Units.SI
import Data.Units.SI.Prefixes

import qualified Data.Units.US.Avoirdupois as Avdp
import qualified Data.Units.US.Troy        as Troy

declareDerivedUnit "Carat"    [t| Milli :@ Gram |] 200  (Just "carat")
declareDerivedUnit "Point"    [t| Carat         |] 0.01 (Just "point")
declareDerivedUnit "AssayTon" [t| (Milli :@ Gram) :* (Avdp.Ton :/ Troy.Ounce) |]
                              1 (Just "AT")