1. KList[M[_]] now instead of KList[HL <: HList, M[_]]
a. head, tail work properly in this variant
b. disadvantage is that full type not easily transformed to new type constructor
2. AList abstracts on K[L[x]], a higher order type constructor.
A. Instances written for:
a. KList
b. Seq[M[T]] for a fixed T
c. TupleN
d. single values
e. operate on one type constructor when nested
B. Main disadvantage is type inference. It just doesn't happen for K[L[x]].
This is mitigated by AList being used internally and rarely needing to construct a K.
* Allow tasks to provide State transformations that are applied after all tasks complete.
* Provide convenience methods for preserving state across invocations.
* Option of session or persisted state.
KList.map -> transform
can now drop trailing 'H' from multi-Task 'mapH'
compressed Action hierarchy by merging (Flat)Map{ped,All,Failure} into (Flat)Mapped
moved most information in Info into attributes: AttributeMap to allow future changes
map, flatMap on single/parallel tasks
dependsOn for side-effect-only dependencies
variants to handle failure- operations similar to catch/finally
fork, join, reduce, ...
initial structure to handle tags, needs to be moved to generic map
per-task streams:
file-backed, named input/output streams and readers
keyed by task name
grab streams of current task or another task's streams
pipe between tasks, ProcessBuilders (partially unify tasks/processes)
access to command line, current State from any task
multi-project aggregation controllable per-task
open issue: overloading #| with multiple type classes does not work