{-# LANGUAGE NoImplicitPrelude #-} {-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# 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 (Eq, Ord, Show) makeClassyPrisms ''Entry