title: Higher order functions in C
body: <p>Is there a "proper" way to implement higher order functions in C.</p>
  
  <p>I'm mostly curious about things like portability and syntax correctness here and if there are more than one ways what the merits and flaws are.</p>
  
  <p>Edit:
  The reason I want to know how to create higher order functions are that I have written a system to convert PyObject lists (which you get when calling python scripts) into a list of C structures containing the same data but organized in a way not dependant on the python.h libraries. So my plan is to have a function which iterates through a pythonic list and calls a function on each item in the list and places the result in a list which it then returns.</p>
  
  <p>So this is basically my plan:</p>
  
  <pre><code>typedef gpointer (converter_func_type)(PyObject *)
  
  gpointer converter_function(PyObject *obj)
  {
      // do som stuff and return a struct cast into a gpointer (which is a void *)
  }
  
  GList *pylist_to_clist(PyObject *obj, converter_func_type f)
  {
     GList *some_glist;
     for each item in obj
     {
         some_glist = g_list_append(some_glist, f(item));
     }
     return some_glist;
  }
  
  void some_function_that_executes_a_python_script(void)
  {
     PyObject *result = python stuff that returns a list;
     GList *clist = pylist_to_clist(result, converter_function);
  }
  </code></pre>
  
  <p>And to clearify the question: I want to know how to do this in safer and more correct C. I would really like to keep the higher order function style but if that is frowned upon I greatly appreciate ways to do this some other way.</p>