The composition operator allows us to easily define functions just in terms of other functions. For example we can replace the definition: twice f x = f (f x) with: twice f = f. f
a function that does at least one of the following: takes one or more functions as arguments (i.e., procedural parameters), returns a function as its result
it means matching items from one set with items in another set - or it means performing a function on each item in one set to get a new corresponding set.