anchor.diff:  
   commandSplit(Command) ->
   % [address [,address]]command[parameters] - from GNU Ed Manual
  -  {match,R} = re:run(Command,"([[:digit:].$]*)(,?)([[:digit:].$]*)([[:alpha:]+-]?)",[global,{capture,all_but_first,list}]),
  +  {match,R} = re:run(Command,"([[:digit:].$+-]*)(,?)([[:digit:].$+-]*)([[:alpha:]]?)",[global,{capture,all_but_first,list}]),
     [A,C,E,O] = hd(R),
     {A,C,E,O}.
   
  
positive.code:     "p" -> print(Eed, NewRange, RangeGiven);
      "a" -> append(Eed, NewRange, RangeGiven);
      "d" -> delete(Eed, NewRange, RangeGiven);
      "+" -> incLine(Eed, NewRange, RangeGiven);
      "-" -> decLine(Eed, NewRange, RangeGiven);
      _ -> noCmd(Eed, NewRange, RangeGiven)
    end.
  
  cmdloop(Eed) ->
  
negative.code:   sendRecv(Eed, getLineNumber);
  getLineRef(Eed, "$") ->
    sendRecv(Eed, lineCount);
  getLineRef(Eed, [$+]) ->
    sendRecv(Eed, getLineNumber) + 1;
  getLineRef(Eed, [$+ | Num]) ->
    sendRecv(Eed, getLineNumber) + getnum(Num);
  getLineRef(Eed, [$-]) ->
    sendRecv(Eed, getLineNumber) - 1;
  getLineRef(Eed, [$- | Num]) ->
    sendRecv(Eed, getLineNumber) - getnum(Num);
  getLineRef(_Eed, Num) ->
    getnum(Num).
  
  