{-# OPTIONS_GHC -Wall #-} {-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE FlexibleInstances #-} module Data.Aviation.Casr.Logbook.Meta.BriefingMeta( BriefingMeta(BriefingMeta) , HasBriefingMeta(..) ) where import Control.Lens(makeClassy, makeWrapped) import Data.Aviation.Casr.Logbook.Meta.BriefingExpense ( BriefingExpense ) import Data.Eq(Eq) import Data.Monoid ( (<>), Monoid(mempty) ) import Data.Ord(Ord) import Data.Semigroup ( Semigroup ) import Prelude(Show) newtype BriefingMeta = BriefingMeta [BriefingExpense] deriving (BriefingMeta -> BriefingMeta -> Bool (BriefingMeta -> BriefingMeta -> Bool) -> (BriefingMeta -> BriefingMeta -> Bool) -> Eq BriefingMeta forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a $c== :: BriefingMeta -> BriefingMeta -> Bool == :: BriefingMeta -> BriefingMeta -> Bool $c/= :: BriefingMeta -> BriefingMeta -> Bool /= :: BriefingMeta -> BriefingMeta -> Bool Eq, Eq BriefingMeta Eq BriefingMeta => (BriefingMeta -> BriefingMeta -> Ordering) -> (BriefingMeta -> BriefingMeta -> Bool) -> (BriefingMeta -> BriefingMeta -> Bool) -> (BriefingMeta -> BriefingMeta -> Bool) -> (BriefingMeta -> BriefingMeta -> Bool) -> (BriefingMeta -> BriefingMeta -> BriefingMeta) -> (BriefingMeta -> BriefingMeta -> BriefingMeta) -> Ord BriefingMeta BriefingMeta -> BriefingMeta -> Bool BriefingMeta -> BriefingMeta -> Ordering BriefingMeta -> BriefingMeta -> BriefingMeta forall a. Eq a => (a -> a -> Ordering) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> a) -> (a -> a -> a) -> Ord a $ccompare :: BriefingMeta -> BriefingMeta -> Ordering compare :: BriefingMeta -> BriefingMeta -> Ordering $c< :: BriefingMeta -> BriefingMeta -> Bool < :: BriefingMeta -> BriefingMeta -> Bool $c<= :: BriefingMeta -> BriefingMeta -> Bool <= :: BriefingMeta -> BriefingMeta -> Bool $c> :: BriefingMeta -> BriefingMeta -> Bool > :: BriefingMeta -> BriefingMeta -> Bool $c>= :: BriefingMeta -> BriefingMeta -> Bool >= :: BriefingMeta -> BriefingMeta -> Bool $cmax :: BriefingMeta -> BriefingMeta -> BriefingMeta max :: BriefingMeta -> BriefingMeta -> BriefingMeta $cmin :: BriefingMeta -> BriefingMeta -> BriefingMeta min :: BriefingMeta -> BriefingMeta -> BriefingMeta Ord, Int -> BriefingMeta -> ShowS [BriefingMeta] -> ShowS BriefingMeta -> String (Int -> BriefingMeta -> ShowS) -> (BriefingMeta -> String) -> ([BriefingMeta] -> ShowS) -> Show BriefingMeta forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a $cshowsPrec :: Int -> BriefingMeta -> ShowS showsPrec :: Int -> BriefingMeta -> ShowS $cshow :: BriefingMeta -> String show :: BriefingMeta -> String $cshowList :: [BriefingMeta] -> ShowS showList :: [BriefingMeta] -> ShowS Show) makeClassy ''BriefingMeta makeWrapped ''BriefingMeta instance Semigroup BriefingMeta where BriefingMeta [BriefingExpense] x <> :: BriefingMeta -> BriefingMeta -> BriefingMeta <> BriefingMeta [BriefingExpense] y = [BriefingExpense] -> BriefingMeta BriefingMeta ([BriefingExpense] x [BriefingExpense] -> [BriefingExpense] -> [BriefingExpense] forall a. Semigroup a => a -> a -> a <> [BriefingExpense] y) instance Monoid BriefingMeta where mempty :: BriefingMeta mempty = [BriefingExpense] -> BriefingMeta BriefingMeta [BriefingExpense] forall a. Monoid a => a mempty