master-plan-0.3.0: The project management tool for hackers

Copyright(c) Rodrigo Setti 2017
LicenseMIT
Maintainerrodrigosetti@gmail.com
Stabilityexperimental
PortabilityPOSIX
Safe HaskellNone
LanguageHaskell2010

MasterPlan.Data

Description

 

Synopsis

Documentation

data ProjectExpr Source #

Structure of a project expression

Instances

Eq ProjectExpr Source # 
Data ProjectExpr Source # 

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> ProjectExpr -> c ProjectExpr #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c ProjectExpr #

toConstr :: ProjectExpr -> Constr #

dataTypeOf :: ProjectExpr -> DataType #

dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c ProjectExpr) #

dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c ProjectExpr) #

gmapT :: (forall b. Data b => b -> b) -> ProjectExpr -> ProjectExpr #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> ProjectExpr -> r #

gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> ProjectExpr -> r #

gmapQ :: (forall d. Data d => d -> u) -> ProjectExpr -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> ProjectExpr -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> ProjectExpr -> m ProjectExpr #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> ProjectExpr -> m ProjectExpr #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> ProjectExpr -> m ProjectExpr #

Show ProjectExpr Source # 

data ProjectProperties Source #

Any binding (with a name) may have associated properties

Instances

Eq ProjectProperties Source # 
Data ProjectProperties Source # 

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> ProjectProperties -> c ProjectProperties #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c ProjectProperties #

toConstr :: ProjectProperties -> Constr #

dataTypeOf :: ProjectProperties -> DataType #

dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c ProjectProperties) #

dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c ProjectProperties) #

gmapT :: (forall b. Data b => b -> b) -> ProjectProperties -> ProjectProperties #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> ProjectProperties -> r #

gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> ProjectProperties -> r #

gmapQ :: (forall d. Data d => d -> u) -> ProjectProperties -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> ProjectProperties -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> ProjectProperties -> m ProjectProperties #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> ProjectProperties -> m ProjectProperties #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> ProjectProperties -> m ProjectProperties #

Show ProjectProperties Source # 

newtype ProjectSystem Source #

A project system defines the bindins (mapping from names to expressions or tasks) and properties, which can be associated to any binding

Constructors

ProjectSystem 

Instances

Eq ProjectSystem Source # 
Data ProjectSystem Source # 

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> ProjectSystem -> c ProjectSystem #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c ProjectSystem #

toConstr :: ProjectSystem -> Constr #

dataTypeOf :: ProjectSystem -> DataType #

dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c ProjectSystem) #

dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c ProjectSystem) #

gmapT :: (forall b. Data b => b -> b) -> ProjectSystem -> ProjectSystem #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> ProjectSystem -> r #

gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> ProjectSystem -> r #

gmapQ :: (forall d. Data d => d -> u) -> ProjectSystem -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> ProjectSystem -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> ProjectSystem -> m ProjectSystem #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> ProjectSystem -> m ProjectSystem #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> ProjectSystem -> m ProjectSystem #

Show ProjectSystem Source # 

data Binding Source #

A binding of a name can refer to an expression. If there are no associated expressions (i.e. equation) then it can have task-level properties

Instances

Eq Binding Source # 

Methods

(==) :: Binding -> Binding -> Bool #

(/=) :: Binding -> Binding -> Bool #

Data Binding Source # 

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Binding -> c Binding #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Binding #

toConstr :: Binding -> Constr #

dataTypeOf :: Binding -> DataType #

dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c Binding) #

dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Binding) #

gmapT :: (forall b. Data b => b -> b) -> Binding -> Binding #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Binding -> r #

gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Binding -> r #

gmapQ :: (forall d. Data d => d -> u) -> Binding -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> Binding -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> Binding -> m Binding #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Binding -> m Binding #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Binding -> m Binding #

Show Binding Source # 

newtype ProjectKey Source #

Constructors

ProjectKey 

Instances

Eq ProjectKey Source # 
Data ProjectKey Source # 

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> ProjectKey -> c ProjectKey #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c ProjectKey #

toConstr :: ProjectKey -> Constr #

dataTypeOf :: ProjectKey -> DataType #

dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c ProjectKey) #

dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c ProjectKey) #

gmapT :: (forall b. Data b => b -> b) -> ProjectKey -> ProjectKey #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> ProjectKey -> r #

gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> ProjectKey -> r #

gmapQ :: (forall d. Data d => d -> u) -> ProjectKey -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> ProjectKey -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> ProjectKey -> m ProjectKey #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> ProjectKey -> m ProjectKey #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> ProjectKey -> m ProjectKey #

Ord ProjectKey Source # 
Show ProjectKey Source # 
IsString ProjectKey Source # 

newtype Trust Source #

Constructors

Trust 

Fields

Instances

Eq Trust Source # 

Methods

(==) :: Trust -> Trust -> Bool #

(/=) :: Trust -> Trust -> Bool #

Fractional Trust Source # 
Data Trust Source # 

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Trust -> c Trust #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Trust #

toConstr :: Trust -> Constr #

dataTypeOf :: Trust -> DataType #

dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c Trust) #

dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Trust) #

gmapT :: (forall b. Data b => b -> b) -> Trust -> Trust #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Trust -> r #

gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Trust -> r #

gmapQ :: (forall d. Data d => d -> u) -> Trust -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> Trust -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> Trust -> m Trust #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Trust -> m Trust #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Trust -> m Trust #

Num Trust Source # 
Ord Trust Source # 

Methods

compare :: Trust -> Trust -> Ordering #

(<) :: Trust -> Trust -> Bool #

(<=) :: Trust -> Trust -> Bool #

(>) :: Trust -> Trust -> Bool #

(>=) :: Trust -> Trust -> Bool #

max :: Trust -> Trust -> Trust #

min :: Trust -> Trust -> Trust #

Real Trust Source # 

Methods

toRational :: Trust -> Rational #

RealFrac Trust Source # 

Methods

properFraction :: Integral b => Trust -> (b, Trust) #

truncate :: Integral b => Trust -> b #

round :: Integral b => Trust -> b #

ceiling :: Integral b => Trust -> b #

floor :: Integral b => Trust -> b #

Show Trust Source # 

Methods

showsPrec :: Int -> Trust -> ShowS #

show :: Trust -> String #

showList :: [Trust] -> ShowS #

newtype Cost Source #

Constructors

Cost 

Fields

Instances

Eq Cost Source # 

Methods

(==) :: Cost -> Cost -> Bool #

(/=) :: Cost -> Cost -> Bool #

Fractional Cost Source # 

Methods

(/) :: Cost -> Cost -> Cost #

recip :: Cost -> Cost #

fromRational :: Rational -> Cost #

Data Cost Source # 

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Cost -> c Cost #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Cost #

toConstr :: Cost -> Constr #

dataTypeOf :: Cost -> DataType #

dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c Cost) #

dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Cost) #

gmapT :: (forall b. Data b => b -> b) -> Cost -> Cost #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Cost -> r #

gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Cost -> r #

gmapQ :: (forall d. Data d => d -> u) -> Cost -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> Cost -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> Cost -> m Cost #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Cost -> m Cost #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Cost -> m Cost #

Num Cost Source # 

Methods

(+) :: Cost -> Cost -> Cost #

(-) :: Cost -> Cost -> Cost #

(*) :: Cost -> Cost -> Cost #

negate :: Cost -> Cost #

abs :: Cost -> Cost #

signum :: Cost -> Cost #

fromInteger :: Integer -> Cost #

Ord Cost Source # 

Methods

compare :: Cost -> Cost -> Ordering #

(<) :: Cost -> Cost -> Bool #

(<=) :: Cost -> Cost -> Bool #

(>) :: Cost -> Cost -> Bool #

(>=) :: Cost -> Cost -> Bool #

max :: Cost -> Cost -> Cost #

min :: Cost -> Cost -> Cost #

Real Cost Source # 

Methods

toRational :: Cost -> Rational #

RealFrac Cost Source # 

Methods

properFraction :: Integral b => Cost -> (b, Cost) #

truncate :: Integral b => Cost -> b #

round :: Integral b => Cost -> b #

ceiling :: Integral b => Cost -> b #

floor :: Integral b => Cost -> b #

Show Cost Source # 

Methods

showsPrec :: Int -> Cost -> ShowS #

show :: Cost -> String #

showList :: [Cost] -> ShowS #

newtype Progress Source #

Constructors

Progress 

Fields

Instances

Eq Progress Source # 
Fractional Progress Source # 
Data Progress Source # 

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Progress -> c Progress #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Progress #

toConstr :: Progress -> Constr #

dataTypeOf :: Progress -> DataType #

dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c Progress) #

dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Progress) #

gmapT :: (forall b. Data b => b -> b) -> Progress -> Progress #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Progress -> r #

gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Progress -> r #

gmapQ :: (forall d. Data d => d -> u) -> Progress -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> Progress -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> Progress -> m Progress #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Progress -> m Progress #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Progress -> m Progress #

Num Progress Source # 
Ord Progress Source # 
Real Progress Source # 
RealFrac Progress Source # 

Methods

properFraction :: Integral b => Progress -> (b, Progress) #

truncate :: Integral b => Progress -> b #

round :: Integral b => Progress -> b #

ceiling :: Integral b => Progress -> b #

floor :: Integral b => Progress -> b #

Show Progress Source # 

cost :: ProjectSystem -> ProjectExpr -> Cost Source #

Expected cost

trust :: ProjectSystem -> ProjectExpr -> Trust Source #

Expected probability of succeeding

simplify :: ProjectSystem -> ProjectSystem Source #

Simplify a project binding structure

simplifyProj :: ProjectExpr -> ProjectExpr Source #

Simplify a project expression structure 1) transform singleton collections into it's only child 2) flatten same constructor of the collection

prioritizeSys :: ProjectSystem -> ProjectSystem Source #

Sort projects in the system order that minimizes cost

prioritizeProj :: ProjectSystem -> ProjectExpr -> ProjectExpr Source #

Sort project in order that minimizes cost