anchor.diff:  
   fail(Line, Reason, Cause) ->
       throw({error, {Line, fn_parser, [Reason, Cause]}}).
  +
  +unwrap_signed_integer({op, _Line, '-', {integer, _Line, Value}}) ->
  +    -Value;
  +unwrap_signed_integer({op, _Line, '+', {integer, _Line, Value}}) ->
  +    Value;
  +unwrap_signed_integer({integer, _Line, Value}) ->
  +    Value.
  
positive.code: literal -> rec_new              : '$1'.
  literal -> fun_call             : '$1'.
  literal -> binary               : '$1'.
  literal -> range                : '$1'.
  literal -> dotdotdot            : {dotdotdot, line('$1')}.
  
  bool_lit -> boolean             : {atom, line('$1'), unwrap('$1')}.
  
  range -> integer dotdot integer :
      Line = line('$2'),
      Start = unwrap('$1'),
      Stop = unwrap('$3'),
      Args0 = ['$1', '$3'],
  
      Args = if
  
negative.code:     end,
  
      {call, Line, {remote, Line, {atom, Line, lists}, {atom, Line, seq}}, Args}.
  
  range -> signed_integer : '$1'.
  
  % list type
  list -> open_list match_expr close_list : {cons, line('$1'), '$2', {nil, line('$1')}}.
  