# Chapter 15 - Advanced functional programming

## `Ch15`

This directory contains multiple examples showing various functional
programming concepts.

This directory can be loaded in an IDE at the `Ch15` level which is recommended
as a few examples require dependencies. Java 11+ is required.

* `ch15/Ch15Examples.java` - Basic examples from the text
* `ch15/ClosureExamples.java` - Basic examples of closing over a value
* `ch15/DepositMain.java` - Example of reflective access to classes
* `ch15/PrefixerMain.java` - Example of a functional string prefixer
* `ch15/StreamExamples.java` - Example of using function chaining on streams
* `ch15/TailRecASM.java` - Example rewriting a tail recursive function in bytecode
* `ch15/TailRecNaive.java` - Example of tail recursive function which still fails
