anchor.diff:  type(string, Val) when is_binary(Val) -> true;
   type(list, Val) when is_list(Val) -> true;
   type(array, Val) when is_list(Val) -> true;
  +type(iso_date, Val) when is_binary(Val) -> validate_date(Val);
   type(any, _Val) -> true;
   type(_T, _Val) -> false.
   
  
positive.code:     zip([], [], Result);
  zip([H1|R1], [H2|R2], {Result, TooMany}) ->
      zip(R1, R2, {[{H1, H2}|Result], TooMany}).
  
negative.code:         _T ->
              case type(PType, GivenValue) of
                  true -> GivenValue;
                  false -> throw({invalid, ["invalid parameter type for param '", PName, "': expected ", atom_to_list(PType)]});
                  {true, NewValue} -> NewValue
              end
      end.
  
  