packages feed

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