let match_parameter_type function_type parameter_list =
    match function_type with
        Tfunction( type_list, _, _ ) ->
          let rec continue = function
              [], [] -> []
            | _, [] -> assert false
            | [], _ -> assert false
            | t1::l1, s2::l2 -> ( s2, t1 )::continue (l1, l2)
          in
          continue (type_list, parameter_list)
      |        _ -> assert false