Model:

one server serving customers from one queue

- type Time = Int
- type Profile = (Time, Time)
- type Event a = (a, Profile)
- type Queue a = [(a, Time)]
- type State a = (Queue a, Time)
- type System a = [([a], Time)]
- type Events a = [Event a]
- event :: Time -> Events a -> Queue a -> [State a]
- system :: Events a -> System a
- mEvent :: Int -> Time -> Events a -> Queue a -> [State a]
- mServe :: Int -> Int -> Queue a -> Queue a
- mTimeStep :: Int -> Queue a -> Int
- mSystem :: Int -> Events a -> System a
- type RProfile = (Dist Time, Trans Time)
- type REvent a = (a, RProfile)
- type REvents a = [REvent a]
- rSystem :: Int -> REvents a -> R (System a)
- rBuildEvents :: REvents a -> R (Events a)
- rmSystem :: Ord a => Int -> Int -> REvents a -> RDist (System a)
- evalSystem :: Ord a => Int -> Int -> REvents a -> (System a -> b) -> RDist b
- unit :: b -> ((), b)
- maxQueue :: Ord a => System a -> Int
- allWaiting :: Ord a => Int -> System a -> [a]
- countWaiting :: Ord a => Int -> System a -> Int
- waiting :: Int -> System a -> Time
- inSystem :: System a -> Time
- total :: System a -> Time
- server :: Int -> System a -> Time
- idle :: Int -> System a -> Time
- idleAvgP :: Int -> System a -> Float