LambdaHack-0.4.101.1: A game engine library for roguelike dungeon crawlers

Safe HaskellNone
LanguageHaskell2010

Game.LambdaHack.Common.Frequency

Contents

Description

A list of items with relative frequencies of appearance.

Synopsis

The Frequency type

data Frequency a Source

The frequency distribution type. Not normalized (operations may or may not group the same elements and sum their frequencies). However, elements with zero frequency are removed upon construction.

The Eq instance compares raw representations, not relative, normalized frequencies, so operations don't need to preserve the expected equalities, unless they do some kind of normalization (see Dice).

Construction

uniformFreq :: Text -> [a] -> Frequency a Source

Uniform discrete frequency distribution.

toFreq :: Text -> [(Int, a)] -> Frequency a Source

Takes a name and a list of frequencies and items into the frequency distribution.

Transformation

scaleFreq :: Show a => Int -> Frequency a -> Frequency a Source

Scale frequency distribution, multiplying it by a positive integer constant.

renameFreq :: Text -> Frequency a -> Frequency a Source

Change the description of the frequency.

setFreq :: Eq a => Frequency a -> a -> Int -> Frequency a Source

Set frequency of an element.

Consumption

nullFreq :: Frequency a -> Bool Source

Test if the frequency distribution is empty.

runFrequency :: Frequency a -> [(Int, a)] Source

give acces to raw frequency values

nameFrequency :: Frequency a -> Text Source

short description for debug, etc.; keep it lazy, because it's rarely used

meanFreq :: Frequency Int -> Int Source

Average value of an Int distribution, rounded up to avoid truncating it in the other code higher up, which would equate 1d0 with 1d1.