chapter 3: exploring methods on List companion object
chapter 4: exercise 8 naive implementation