anchor.diff:    "fun(" ++ Sig = lists:flatten(erl_types:t_to_string(Type, RecDict)),
     ")" ++ RevSig = lists:reverse(Sig),
     lists:reverse(RevSig).
  +
  +flat_format(Fmt, Lst) ->
  +  lists:flatten(io_lib:format(Fmt, Lst)).
   
   %%-------------------------------------------------------------------
   %% Author      : Per Gustafsson <pergu@it.uu.se>
  
positive.code:       ?debug(_NewRecDict),
        Ok;
      {error, Name, Error} ->
        {error, lists:flatten(io_lib:format("  Error while parsing #~w{}: ~s\n",
  					  [Name, Error]))}
    end.
  
  add_new_type(TypeOrOpaque, Name, TypeForm, ArgForms, Module, RecDict) ->
    case erl_types:type_is_defined(TypeOrOpaque, Name, RecDict) of
      true ->
        throw({error, io_lib:format("Type already defined: ~w\n", [Name])});
      false ->
        ArgTypes = [erl_types:t_from_form(X) || X <- ArgForms],
        case lists:all(fun erl_types:t_is_var/1, ArgTypes) of
  
negative.code: 	  ArgNames = [erl_types:t_var_name(X) || X <- ArgTypes],
  	  dict:store({TypeOrOpaque, Name}, {Module, TypeForm, ArgNames}, RecDict);
  	false ->
  	  throw({error, flat_format("Type declaration for ~w does not "
  				    "have variables as parameters", [Name])})
        end
    end.
  
  