• Andrei Paskevich's avatar
    "I want to believe" commit. · f0218f41
    Andrei Paskevich authored
    Not only Theory, but also Task and Transformation 
    do not need to depend on environment. Moreover,
    we don't have to track the clone history in tasks.
    The only thing we need to do, is to provide three
    registration functions in Driver, namely:
      val register_transform : string -> (unit -> task_t) -> unit
      val register_transform_env : string -> (env -> task_t) -> unit
      val register_transform_clone : string -> (env -> clone -> task_t) -> unit
    and then another three for task_list_t.
    Then any particular transformation that is going to depend
    on environment or clone_history, must register itself via
    the appropriate registration function. It will be the
    responsibility of Driver to recreate the transformation
    for every new environment and/or clone history. It will
    be easy, given that both [env] and [clone] are physically
    comparable and provide a unique tag.
    Thus, the generic interface provided by Transform can be
    completely independent on [env] and [clone].
    This commit implements the proposed interface of Task
    and moves the environment stuff into a separate module.
task.ml 7.21 KB