packages feed

game-probability-1.0: game-probability.cabal

Name:                game-probability
Version:             1.0
Synopsis:            Simple probability library for dice rolls and similar simple games of chance
-- A longer description of the package.
Description:         A library designed to aid in easily calculating the
                     probability of various outcomes of dice rolls.  The
		     central types are held in the
		     "Numeric.Probability.Game.Event" module, the dice are
		     defined in the "Numeric.Probability.Game.Dice" module,
		     and the functions for calculating probabilities are in
		     the "Numeric.Probability.Game.Query" module.  Various
		     examples are scattered throughout the library, but here
		     are some more:
                     .
                     Evalulates the chance of a coin toss turning up heads:
                     .
                     > chanceTrue coinToss
                     .
                     Shows the chances of each outcome of rolling two six-sided dice, as a textual bar chart:
                     .
                     > show (2*d6)
                     .
                     The chance of getting an 18 when rolling 3 six-sided dice and rerolling on any total less than 8:
                     .
                     > chancePred (== 18) ((3*d6) `rerollOn` [3..7])
                     .
                     As a more complex example, this implements my memory/understanding of the original
		     World of Darkness dice system
		     (<http://en.wikipedia.org/wiki/Storytelling_System>).
		     You roll a given number of 10-sided dice, rolling one
		     extra for every 10 you score if you are specialised.  The number of 1s on the
		     original roll are subtracted from the total number of
		     dice that equal or exceed the difficulty target:
                     .
                     > successes :: Int -> Int -> Bool -> EventM Int
                     > successes target dice specialised
                     >   = do initial <- replicateM dice d10
                     >        extra <- if specialised
                     >                   then replicateM (count (== 10) initial) d10
                     >                   else return []
                     >        return (count (>= target) (initial ++ extra) - count (== 1) initial)
                     >   where
                     >     count f xs = length (filter f xs)
                     .
                     If only all RPGs specified their rules in Haskell!
                     .
                     See also the blog post on the design of the library: <http://chplib.wordpress.com/2010/08/13/nice-dice-in-haskell/>
License:             BSD3
License-file:        LICENSE
Author:              Neil Brown
Maintainer:          neil@twistedsquare.com
-- Copyright:           

Category:            Math
Build-type:          Simple

Cabal-version:       >=1.6


Library
  -- Modules exported by the library.
  Exposed-modules:     Numeric.Probability.Game.Event
                       Numeric.Probability.Game.Dice
                       Numeric.Probability.Game.Query
  
  -- Packages needed in order to build this package.
  Build-depends:       base >= 4 && < 5, probability == 0.2.*, random == 1.0.*

  Extensions:          GeneralizedNewtypeDeriving FlexibleInstances

  GHC-Options:         -Wall