tail in terms of drop
length implemented using foldRight instead of foldLeft
sum using foldLeft
product using foldLeft
length using foldLeft
reverse of a list
append using foldRight
join using foldLeft
implemented flatMap
filter using flatMap
zipWith
efficient hasSubsequence
tree functions