objects that implement map are functors. So, Array is a functor. and Array.filter is a higher order function
abstract
a functor is an object which acts as a container for a value, which then allows you to APPLY one or more functions to that value, and returns a new functor (in case of .map(), an Array) containing the transformed value.
[See also here] (http://adit.io/posts/2013-04-17-functors,_applicatives,_and_monads_in_pictures.html)