{-# LANGUAGE BangPatterns #-}
{-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE ExistentialQuantification #-}
{-# LANGUAGE TemplateHaskell #-}
module Experimenter.Setting where
import Control.DeepSeq
import Control.Lens
import Data.Serialize
import qualified Data.Text as T
import GHC.Generics
data ExperimentInfoParameter =
forall b. (Show b, Eq b, Serialize b) =>
ExperimentInfoParameter
{ ExperimentInfoParameter -> Text
infoParameterName :: !T.Text
, ()
infoParameter :: !b
}
instance NFData ExperimentInfoParameter where
rnf :: ExperimentInfoParameter -> ()
rnf (ExperimentInfoParameter Text
t !b
_) = Text -> ()
forall a. NFData a => a -> ()
rnf Text
t
type MkExperimentSetting a = a -> ExperimentSetting
data ExperimentSetting = ExperimentSetting
{ ExperimentSetting -> Text
_experimentBaseName :: !T.Text
, ExperimentSetting -> [ExperimentInfoParameter]
_experimentInfoParameters :: ![ExperimentInfoParameter]
, ExperimentSetting -> Int
_experimentRepetitions :: !Int
, ExperimentSetting -> Int
_preparationSteps :: !Int
, ExperimentSetting -> Int
_evaluationWarmUpSteps :: !Int
, ExperimentSetting -> Int
_evaluationSteps :: !Int
, ExperimentSetting -> Int
_evaluationReplications :: !Int
, ExperimentSetting -> Maybe Int
_evaluationMaxStepsBetweenSaves :: !(Maybe Int)
} deriving ((forall x. ExperimentSetting -> Rep ExperimentSetting x)
-> (forall x. Rep ExperimentSetting x -> ExperimentSetting)
-> Generic ExperimentSetting
forall x. Rep ExperimentSetting x -> ExperimentSetting
forall x. ExperimentSetting -> Rep ExperimentSetting x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep ExperimentSetting x -> ExperimentSetting
$cfrom :: forall x. ExperimentSetting -> Rep ExperimentSetting x
Generic, ExperimentSetting -> ()
(ExperimentSetting -> ()) -> NFData ExperimentSetting
forall a. (a -> ()) -> NFData a
rnf :: ExperimentSetting -> ()
$crnf :: ExperimentSetting -> ()
NFData)
makeLenses ''ExperimentSetting