hid-examples-0.5: ch11/weights-kinds/Main.hs
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE KindSignatures #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
data WeightUnits = Kg | Lb
newtype Weight (u :: WeightUnits) = Weight Double
deriving (Num, Show)
w1 :: Weight Kg
w1 = Weight 81
w2 :: Weight Lb
w2 = Weight 120
kg2lb :: Weight Kg -> Weight Lb
kg2lb (Weight wkg) = Weight (wkg * 2.205)
main = print $ kg2lb w1 + w2