currying
product function
quicksort