Recap
      
      
        
          - Principles of functional programming
            - Immutable data
- Pure functions
- First-class functions
- Higher-order functions
- Kotlin features
            - Kotlin standard functions
- Function literals with receivers
- Use functional parameters to “inject” the functions which have side effects into our functions under test in order to allow a lambda “mock” to be injected for testing.