use implicit to implement msort for class 5.3
higher-order function of List for class 5.4
higher-order function of List for class 5.5