Copyright | Copyright (c) 2009 Alexey Khudyakov <alexey.skladnoy@gmail.com> |
---|---|

License | BSD3 |

Maintainer | Alexey Khudyakov <alexey.skladnoy@gmail.com> |

Stability | experimental |

Safe Haskell | None |

Language | Haskell98 |

Mutable histograms.

## Synopsis

- data MHistogram s v bin a
- newMHistogram :: (PrimMonad m, Bin bin, MVector v a) => a -> bin -> m (MHistogram (PrimState m) v bin a)
- fill :: (PrimMonad m, MVector v a, Bin bin) => MHistogram (PrimState m) v bin a -> BinValue bin -> (a -> b -> a) -> b -> m ()
- unsafeFreezeHist :: (PrimMonad m, Vector v a, Bin bin) => MHistogram (PrimState m) (Mutable v) bin a -> m (Histogram v bin a)
- freezeHist :: (PrimMonad m, Vector v a, Bin bin) => MHistogram (PrimState m) (Mutable v) bin a -> m (Histogram v bin a)

# Mutable histograms

data MHistogram s v bin a Source #

Mutable histogram.

newMHistogram :: (PrimMonad m, Bin bin, MVector v a) => a -> bin -> m (MHistogram (PrimState m) v bin a) Source #

Create new mutable histogram. All bins are set to zero element as passed to function.

:: (PrimMonad m, MVector v a, Bin bin) | |

=> MHistogram (PrimState m) v bin a | Mutable histogram to put value to |

-> BinValue bin | Value being binned |

-> (a -> b -> a) | Fold function |

-> b | Value being put into histogram |

-> m () |

Generic fill. It could be seen as left fold with multiple
accumulators where accumulator is chosen by `BinValue bin`

.

unsafeFreezeHist :: (PrimMonad m, Vector v a, Bin bin) => MHistogram (PrimState m) (Mutable v) bin a -> m (Histogram v bin a) Source #

Create immutable histogram from mutable one. This operation is unsafe! Accumulator mustn't be used after that

freezeHist :: (PrimMonad m, Vector v a, Bin bin) => MHistogram (PrimState m) (Mutable v) bin a -> m (Histogram v bin a) Source #

Create immutable histogram from mutable one.