{-# LANGUAGE NoImplicitPrelude #-} {-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE FunctionalDependencies #-} {-# LANGUAGE FlexibleInstances #-} module Data.Aviation.Casr.Logbook.Types.Logbook( Logbook(..) , HasLogbook(..) , aviatorlogbook , emptylogbook , singleentrylogbook ) where import Control.Lens(makeClassy) import Data.Aviation.Casr.Logbook.Types.Aviator(Aviator) import Data.Aviation.Casr.Logbook.Types.Entries(Entries(Entries), emptyentries, singleentry) import Data.Aviation.Casr.Logbook.Types.Entry(Entry) import Data.Eq(Eq) import Data.Ord(Ord) import Prelude(Show) data Logbook ae se ee be = Logbook { _logbookaviator :: Aviator , _logbookentries :: (Entries ae se ee be) } deriving (Eq, Ord, Show) makeClassy ''Logbook aviatorlogbook :: Aviator -> [Entry ae se ee be] -> Logbook ae se ee be aviatorlogbook a e = Logbook a (Entries e) emptylogbook :: Aviator -> Logbook ae se ee be emptylogbook a = Logbook a emptyentries singleentrylogbook :: Aviator -> Entry ae se ee be -> Logbook ae se ee be singleentrylogbook a e = Logbook a (singleentry e)