/* sbt -- Simple Build Tool * Copyright 2010 Mark Harrah */ package sbt import Types._ /** Represents a task node in a format understood by the task evaluation engine Execute. * Heterogenous inputs (Mixed, tuple) and homogeneous (Uniform, sequence) are defined and consumed separately. * * @tparam A the task type * @tparam T the type computed by this node */ trait Node[A[_], T] { type Mixed <: HList type Uniform val mixedIn: KList[A, Mixed] val uniformIn: Seq[A[Uniform]] /** Computes the result of this task given the results from the inputs. */ def work(mixed: KList[Result, Mixed], uniform: Seq[Result[Uniform]]): Either[A[T], T] }