Walter Prins wrote:
2011/2/14 Rafael Durán Castañeda <rafadurancastan...@gmail.com>

Could we consider sorted as an high order function?

sorted_list = sorted(list_strings, key = str.lower)


No because sorted() returns a list as a result.   A higher order function
produces another function as a result, or takes one or more functions as a
parameter.

By that definition, sorted *is* a higher-order function as it takes a key function as a parameter.

Typically, though, most people would consider that in order to count as a high order function, it must take another function as a main parameter, and not as an optional extra.

E.g. sorted doesn't make the cut, because you can call sorted(list_strings) without giving a key function. The key function is an optional extra that merely modifies the action of sorted, rather than an essential part of it.

On the other hand, once you really start to embrace the idea of functions-as-data, the distinction becomes less important. There are functions that take strings as arguments, and functions that take numbers as argument, and functions that take strings AND numbers as arguments... why should we single out functions that take functions as special? If functions are tools, then there's no fundamental difference between "ordinary tools" and "tools that make other tools". They're all just tools.

The difference between "ordinary functions" and "higher-order functions" is most important in languages that don't have higher-order functions.


--
Steven
_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to