packages feed

fibon-0.1.0: lib/Fibon/Timeout.hs

module Fibon.Timeout(
    Timeout(..)
  , timeoutToMicroSeconds
)
where

data Timeout =
    Infinity
  | Limit {hours :: Int, mins :: Int, secs :: Int}

timeoutToMicroSeconds :: Timeout -> Maybe Int
timeoutToMicroSeconds Infinity      = Nothing
timeoutToMicroSeconds (Limit h m s) = Just $
  (hoursToMicroSeconds h) + (minsToMicroSeconds m) + (secsToMicroSeconds s)
  where
    hoursToMicroSeconds = (* (36 * 10 ^ (8::Int)))
    minsToMicroSeconds  = (* (6  * 10 ^ (7::Int)))
    secsToMicroSeconds  = (* (1  * 10 ^ (6::Int)))