packages feed

units-2.1: Tests/Compile/Units.hs

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

module Tests.Compile.Units where

import Data.Metrology

data Meter = Meters
data Foot = Feet
data Yard = Yards

type Length = MkQu_U Meter
type Time = MkQu_U Second

data LengthD = LengthD
instance Dimension LengthD
data TimeD = TimeD
instance Dimension TimeD

instance Unit Meter where
  type BaseUnit Meter = Canonical
  type DimOfUnit Meter = LengthD

instance Unit Foot where
  type BaseUnit Foot = Meter
  conversionRatio _ = 0.3048

instance Unit Yard where
  type BaseUnit Yard = Foot
  conversionRatio _ = 3

data Second = Seconds
instance Unit Second where
  type BaseUnit Second = Canonical
  type DimOfUnit Second = TimeD

data Hertz = Hertz
instance Unit Hertz where
  type BaseUnit Hertz = Number :/ Second
  conversionRatio _ = 1