{-# LANGUAGE BangPatterns #-} {-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE TemplateHaskell #-} module Experimenter.Measure where import Control.DeepSeq import Control.Lens import GHC.Generics import Experimenter.StepResult data Measure = Measure { Measure -> Int _measurePeriod :: !Int , Measure -> [StepResult] _measureResults :: ![StepResult] } deriving ((forall x. Measure -> Rep Measure x) -> (forall x. Rep Measure x -> Measure) -> Generic Measure forall x. Rep Measure x -> Measure forall x. Measure -> Rep Measure x forall a. (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a $cto :: forall x. Rep Measure x -> Measure $cfrom :: forall x. Measure -> Rep Measure x Generic) makeLenses ''Measure instance NFData Measure where rnf :: Measure -> () rnf (Measure !Int p ![StepResult] r) = Int -> () forall a. NFData a => a -> () rnf Int p () -> () -> () `seq` [StepResult] -> () forall (f :: * -> *) a. (NFData1 f, NFData a) => f a -> () rnf1 [StepResult] r