implements foldLeft, strictlyOrdered, Unary and Binaries, and Function