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