{-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE MultiParamTypeClasses #-} module Epidemic.Types.Parameter where import Epidemic.Types.Population (Population(..)) import Epidemic.Types.Time (AbsoluteTime(..)) -- | Class of types that can be considered parameterisations of a epidemic -- model. class (Population p) => ModelParameters a p where rNaught :: p -> a -> AbsoluteTime -> Maybe Double eventRate :: p -> a -> AbsoluteTime -> Maybe Rate birthProb :: p -> a -> AbsoluteTime -> Maybe Probability type Rate = Double type Probability = Double