Explore functional DSLs and type systems in Java and Kotlin that facilitate easier-to-read, cleaner, more testable, and more fault tolerant code