Copyright | (c) Edward Kmett 2013 |
---|---|
License | BSD3 |
Maintainer | Edward Kmett <[email protected]> |
Stability | experimental |
Portability | non-portable |
Safe Haskell | None |
Language | Haskell2010 |
Data.Approximate.Mass
Description
Documentation
A quantity with a lower-bound on its probability mass. This represents
a 'probable value' as a Monad
that you can use to calculate progressively
less likely consequences.
NB: These probabilities are all stored in the log domain. This enables us to retain accuracy despite very long multiplication chains. We never add these probabilities so the additional overhead of working in the log domain is never incurred, except on transitioning in and out.
This is most useful for discrete types, such as
small Integral
instances or a Bounded
Enum
like
Bool
.
Also note that (
and &?
)(
are able to use knowledge about the
function to get better precision on their results than naively using
|?
)liftA2
(&&
)
>>>
let z = Mass 0.875 'z'
>>>
replicateM 3 z
Mass 0.669921875 "zzz"
Instances
Foldable Mass Source # | |||||
Defined in Data.Approximate.Mass Methods fold :: Monoid m => Mass m -> m # foldMap :: Monoid m => (a -> m) -> Mass a -> m # foldMap' :: Monoid m => (a -> m) -> Mass a -> m # foldr :: (a -> b -> b) -> b -> Mass a -> b # foldr' :: (a -> b -> b) -> b -> Mass a -> b # foldl :: (b -> a -> b) -> b -> Mass a -> b # foldl' :: (b -> a -> b) -> b -> Mass a -> b # foldr1 :: (a -> a -> a) -> Mass a -> a # foldl1 :: (a -> a -> a) -> Mass a -> a # elem :: Eq a => a -> Mass a -> Bool # maximum :: Ord a => Mass a -> a # | |||||
Eq1 Mass Source # | |||||
Traversable Mass Source # | |||||
Applicative Mass Source # | |||||
Functor Mass Source # | |||||
Monad Mass Source # | |||||
Serial1 Mass Source # | |||||
Defined in Data.Approximate.Mass Methods serializeWith :: MonadPut m => (a -> m ()) -> Mass a -> m () # deserializeWith :: MonadGet m => m a -> m (Mass a) # | |||||
Comonad Mass Source # | |||||
ComonadApply Mass Source # | |||||
Hashable1 Mass Source # | |||||
Defined in Data.Approximate.Mass | |||||
Copointed Mass Source # | |||||
Defined in Data.Approximate.Mass | |||||
Pointed Mass Source # | |||||
Defined in Data.Approximate.Mass | |||||
Apply Mass Source # | |||||
Bind Mass Source # | |||||
Extend Mass Source # | |||||
Unbox a => Vector Vector (Mass a) Source # | |||||
Defined in Data.Approximate.Mass Methods basicUnsafeFreeze :: Mutable Vector s (Mass a) -> ST s (Vector (Mass a)) basicUnsafeThaw :: Vector (Mass a) -> ST s (Mutable Vector s (Mass a)) basicLength :: Vector (Mass a) -> Int basicUnsafeSlice :: Int -> Int -> Vector (Mass a) -> Vector (Mass a) basicUnsafeIndexM :: Vector (Mass a) -> Int -> Box (Mass a) basicUnsafeCopy :: Mutable Vector s (Mass a) -> Vector (Mass a) -> ST s () | |||||
Unbox a => MVector MVector (Mass a) Source # | |||||
Defined in Data.Approximate.Mass Methods basicLength :: MVector s (Mass a) -> Int basicUnsafeSlice :: Int -> Int -> MVector s (Mass a) -> MVector s (Mass a) basicOverlaps :: MVector s (Mass a) -> MVector s (Mass a) -> Bool basicUnsafeNew :: Int -> ST s (MVector s (Mass a)) basicInitialize :: MVector s (Mass a) -> ST s () basicUnsafeReplicate :: Int -> Mass a -> ST s (MVector s (Mass a)) basicUnsafeRead :: MVector s (Mass a) -> Int -> ST s (Mass a) basicUnsafeWrite :: MVector s (Mass a) -> Int -> Mass a -> ST s () basicClear :: MVector s (Mass a) -> ST s () basicSet :: MVector s (Mass a) -> Mass a -> ST s () basicUnsafeCopy :: MVector s (Mass a) -> MVector s (Mass a) -> ST s () basicUnsafeMove :: MVector s (Mass a) -> MVector s (Mass a) -> ST s () basicUnsafeGrow :: MVector s (Mass a) -> Int -> ST s (MVector s (Mass a)) | |||||
Data a => Data (Mass a) Source # | |||||
Defined in Data.Approximate.Mass Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Mass a -> c (Mass a) # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Mass a) # toConstr :: Mass a -> Constr # dataTypeOf :: Mass a -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Mass a)) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Mass a)) # gmapT :: (forall b. Data b => b -> b) -> Mass a -> Mass a # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Mass a -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Mass a -> r # gmapQ :: (forall d. Data d => d -> u) -> Mass a -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> Mass a -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Mass a -> m (Mass a) # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Mass a -> m (Mass a) # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Mass a -> m (Mass a) # | |||||
Monoid a => Monoid (Mass a) Source # | |||||
Semigroup a => Semigroup (Mass a) Source # | |||||
Generic (Mass a) Source # | |||||
Defined in Data.Approximate.Mass Associated Types
| |||||
Read a => Read (Mass a) Source # | |||||
Show a => Show (Mass a) Source # | |||||
Binary a => Binary (Mass a) Source # | |||||
Serial a => Serial (Mass a) Source # | |||||
Defined in Data.Approximate.Mass | |||||
Serialize a => Serialize (Mass a) Source # | |||||
NFData a => NFData (Mass a) Source # | |||||
Defined in Data.Approximate.Mass | |||||
Eq a => Eq (Mass a) Source # | |||||
Ord a => Ord (Mass a) Source # | |||||
Hashable a => Hashable (Mass a) Source # | |||||
Defined in Data.Approximate.Mass | |||||
(Serialize a, Typeable a) => SafeCopy (Mass a) Source # | |||||
newtype MVector s (Mass a) Source # | |||||
Defined in Data.Approximate.Mass | |||||
type Rep (Mass a) Source # | |||||
Defined in Data.Approximate.Mass type Rep (Mass a) = D1 ('MetaData "Mass" "Data.Approximate.Mass" "approximate-0.3.5-LNFW12sBcKdBCnAkJkAMzk" 'False) (C1 ('MetaCons "Mass" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'SourceUnpack 'SourceStrict 'DecidedStrict) (Rec0 (Log Double)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a))) | |||||
newtype Vector (Mass a) Source # | |||||
Defined in Data.Approximate.Mass |
(|?) :: Mass Bool -> Mass Bool -> Mass Bool infixr 2 Source #
Calculate the logical or
of two booleans with confidence lower bounds.