{-# OPTIONS_GHC -Wall #-} {-# LANGUAGE NoImplicitPrelude #-} {-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE FunctionalDependencies #-} {-# LANGUAGE FlexibleInstances #-} module Data.Aviation.Casr.Logbook.Types.Entry( Entry(..) , AsEntry(..) ) where import Control.Lens(makeClassyPrisms) import Data.Aviation.Casr.Logbook.Types.AircraftFlight(AircraftFlight) import Data.Aviation.Casr.Logbook.Types.SimulatorFlight(SimulatorFlight) import Data.Aviation.Casr.Logbook.Types.Exam(Exam) import Data.Aviation.Casr.Logbook.Types.Briefing(Briefing) import Data.Eq(Eq) import Data.Ord(Ord) import Prelude(Show) data Entry ae se ee be = AircraftFlightEntry AircraftFlight ae | SimulatorFlightEntry SimulatorFlight se | ExamEntry Exam ee | BriefingEntry Briefing be deriving (Entry ae se ee be -> Entry ae se ee be -> Bool (Entry ae se ee be -> Entry ae se ee be -> Bool) -> (Entry ae se ee be -> Entry ae se ee be -> Bool) -> Eq (Entry ae se ee be) forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a forall ae se ee be. (Eq ae, Eq se, Eq ee, Eq be) => Entry ae se ee be -> Entry ae se ee be -> Bool $c== :: forall ae se ee be. (Eq ae, Eq se, Eq ee, Eq be) => Entry ae se ee be -> Entry ae se ee be -> Bool == :: Entry ae se ee be -> Entry ae se ee be -> Bool $c/= :: forall ae se ee be. (Eq ae, Eq se, Eq ee, Eq be) => Entry ae se ee be -> Entry ae se ee be -> Bool /= :: Entry ae se ee be -> Entry ae se ee be -> Bool Eq, Eq (Entry ae se ee be) Eq (Entry ae se ee be) => (Entry ae se ee be -> Entry ae se ee be -> Ordering) -> (Entry ae se ee be -> Entry ae se ee be -> Bool) -> (Entry ae se ee be -> Entry ae se ee be -> Bool) -> (Entry ae se ee be -> Entry ae se ee be -> Bool) -> (Entry ae se ee be -> Entry ae se ee be -> Bool) -> (Entry ae se ee be -> Entry ae se ee be -> Entry ae se ee be) -> (Entry ae se ee be -> Entry ae se ee be -> Entry ae se ee be) -> Ord (Entry ae se ee be) Entry ae se ee be -> Entry ae se ee be -> Bool Entry ae se ee be -> Entry ae se ee be -> Ordering Entry ae se ee be -> Entry ae se ee be -> Entry ae se ee be 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 forall ae se ee be. (Ord ae, Ord se, Ord ee, Ord be) => Eq (Entry ae se ee be) forall ae se ee be. (Ord ae, Ord se, Ord ee, Ord be) => Entry ae se ee be -> Entry ae se ee be -> Bool forall ae se ee be. (Ord ae, Ord se, Ord ee, Ord be) => Entry ae se ee be -> Entry ae se ee be -> Ordering forall ae se ee be. (Ord ae, Ord se, Ord ee, Ord be) => Entry ae se ee be -> Entry ae se ee be -> Entry ae se ee be $ccompare :: forall ae se ee be. (Ord ae, Ord se, Ord ee, Ord be) => Entry ae se ee be -> Entry ae se ee be -> Ordering compare :: Entry ae se ee be -> Entry ae se ee be -> Ordering $c< :: forall ae se ee be. (Ord ae, Ord se, Ord ee, Ord be) => Entry ae se ee be -> Entry ae se ee be -> Bool < :: Entry ae se ee be -> Entry ae se ee be -> Bool $c<= :: forall ae se ee be. (Ord ae, Ord se, Ord ee, Ord be) => Entry ae se ee be -> Entry ae se ee be -> Bool <= :: Entry ae se ee be -> Entry ae se ee be -> Bool $c> :: forall ae se ee be. (Ord ae, Ord se, Ord ee, Ord be) => Entry ae se ee be -> Entry ae se ee be -> Bool > :: Entry ae se ee be -> Entry ae se ee be -> Bool $c>= :: forall ae se ee be. (Ord ae, Ord se, Ord ee, Ord be) => Entry ae se ee be -> Entry ae se ee be -> Bool >= :: Entry ae se ee be -> Entry ae se ee be -> Bool $cmax :: forall ae se ee be. (Ord ae, Ord se, Ord ee, Ord be) => Entry ae se ee be -> Entry ae se ee be -> Entry ae se ee be max :: Entry ae se ee be -> Entry ae se ee be -> Entry ae se ee be $cmin :: forall ae se ee be. (Ord ae, Ord se, Ord ee, Ord be) => Entry ae se ee be -> Entry ae se ee be -> Entry ae se ee be min :: Entry ae se ee be -> Entry ae se ee be -> Entry ae se ee be Ord, Int -> Entry ae se ee be -> ShowS [Entry ae se ee be] -> ShowS Entry ae se ee be -> String (Int -> Entry ae se ee be -> ShowS) -> (Entry ae se ee be -> String) -> ([Entry ae se ee be] -> ShowS) -> Show (Entry ae se ee be) forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a forall ae se ee be. (Show ae, Show se, Show ee, Show be) => Int -> Entry ae se ee be -> ShowS forall ae se ee be. (Show ae, Show se, Show ee, Show be) => [Entry ae se ee be] -> ShowS forall ae se ee be. (Show ae, Show se, Show ee, Show be) => Entry ae se ee be -> String $cshowsPrec :: forall ae se ee be. (Show ae, Show se, Show ee, Show be) => Int -> Entry ae se ee be -> ShowS showsPrec :: Int -> Entry ae se ee be -> ShowS $cshow :: forall ae se ee be. (Show ae, Show se, Show ee, Show be) => Entry ae se ee be -> String show :: Entry ae se ee be -> String $cshowList :: forall ae se ee be. (Show ae, Show se, Show ee, Show be) => [Entry ae se ee be] -> ShowS showList :: [Entry ae se ee be] -> ShowS Show) makeClassyPrisms ''Entry