anchor.diff:  %%%===================================================================
   
   %% @doc Initialize state.
  -init([ReadFuns, Function]) ->
  +init([nodag, ReadFuns, Function, WriteFun]) ->
       {ok, #state{read_funs=ReadFuns,
                   trans_fun=Function,
  -                write_fun=undefined}};
  +                write_fun=WriteFun}};
   
   init([ReadFuns, TransFun, {To, _}=WriteFun]) ->
       From = [Id || {Id, _} <- ReadFuns],
  
positive.code: %% API
  -export([start_link/1,
           start_dag_link/1,
           single_fire_function/4,
           start_single_fire_process/1]).
  
  
negative.code: %%% API
  %%%===================================================================
  
  start_link([ReadFuns, TransFun]) ->
      start_manual_process([ReadFuns, TransFun, undefined]).
  
  %% @doc A lasp process that shouldn't be automatically managed by the dag
  %%
  %%      When using this function, the resulting process isn't tracked by
  %%      the runtime. Only useful when we want to manually introduce the
  %%      dependencies in the graph, or for functions that aren't currently
  %%      supported (fold and stream).
  %%
  start_manual_process([_ReadFuns, _TransFun, _WriteFun]=Args) ->
      lasp_process_sup:start_child([nodag | Args]).
  
  %% @todo rename to start_link once all functions are tracked
  start_dag_link(Args) ->
      start_tracked_process(undefined, Args).
  
  %% @doc Starts a single-fire lasp process.
  %%
  %%      These processes only run until their transform functions complete
  %%      succesfully one time. Used to model reads and binds on values.
  %%
  start_single_fire_process(Args) ->
      start_tracked_process(1, Args).
  
  