anchor.diff:  %%%     Compiler from Aeterinty Ring language to the Aeternity VM, aevm.
   %%% @end
   %%% Created : 21 Dec 2017
  -%%% 
  +%%%
   %%%-------------------------------------------------------------------
   -module(aer_ast_to_icode).
   
  
positive.code: ast_body({app,[_,{format,infix}],{Op,_},[A,B]}) ->
      #binop{op = Op, left = ast_body(A), right = ast_body(B)};
  ast_body({app,_,Fun,Args}) ->
      #funcall{function=ast_body(Fun), 
  	     args=[ast_body(A) || A <- Args]};
  ast_body({'if',_,Dec,Then,Else}) ->
      #ifte{decision = ast_body(Dec)
  
negative.code: ast_body({typed,_,{record,Attrs,Fields},T}) ->
      error({record_has_bad_type,Attrs,T});
  ast_body({proj,_,{typed,_,Record,{record_t,Fields}},{id,_,FieldName}}) ->
      [Index] = [I
  	       || {I,{field_t,_,_,{id,_,Name},_}} <-
  		      lists:zip(lists:seq(1,length(Fields)),Fields),
  		  Name==FieldName],
      #binop{op = '!', left = #integer{value = 32*(Index-1)}, right = ast_body(Record)};
  