master-plan-0.1.0.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 # 

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