packages feed

aviation-weight-balance-0.0.2: src/Data/Aviation/WB/Avgas100LL.hs

{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE FunctionalDependencies #-}

module Data.Aviation.WB.Avgas100LL(
  Avgas100LL(..)
) where

import Control.Category((.))
import Control.Lens(Iso', from)
import Data.Aviation.Units.USGallons(usgallons)
import Data.Aviation.Units.Pounds(pounds)
import Data.Aviation.WB.Weight(Weight)
import Data.Aviation.WB.Volume(Volume)
import Numeric.Lens(multiplying)

class Avgas100LL a b | a -> b, b -> a where
  avgas100LL ::
    Iso' a b

instance Avgas100LL Volume Weight where
  avgas100LL =
    from usgallons . multiplying 6 . pounds

instance Avgas100LL Weight Volume where
  avgas100LL =
    from avgas100LL