statistics
statistics copied to clipboard
Add newtype wrappers to fix scale/rate confusion
We have several functions which could take either scale or rate parameter. For example exponential distribution. I can never remember which should be used. I think we shold use type system to encode which kind of parameter should be used. It's also conveninent to be able to pass either rate or scale parameter. So I propose following design:
newtype Rate = Rate Double
newtype Scale = Scale Double
class RateOrScale a where
toRateParameter :: a → Double
toScaleParameter :: a → Double
Name of type class is hmm... not ideal.
another option is:
data RateOrScale {- or any better name -}
= Rate Double
| Scale Double