units-2.1: Tests/Compile/TH.hs
{-# LANGUAGE TemplateHaskell, DataKinds, TypeFamilies #-}
module Tests.Compile.TH where
import Data.Metrology.TH
import Data.Metrology.Poly
import qualified Data.Metrology as Mono
$(declareDimension "Length")
$(declareCanonicalUnit "Meter" ''Length (Just "m"))
$(declareDerivedUnit "Foot" ''Meter 0.3048 Nothing)
type MyLCSU = MkLCSU '[(Length, Meter)]
len1 :: MkQu_DLN Length MyLCSU Double
len1 = 5 % Meter
len2 :: MkQu_DLN Length MyLCSU Double
len2 = 10 % Foot
$(declareMonoUnit "Second" (Just "s"))
type Time = MkQu_D Second
time :: Time
time = 10 Mono.% Second