Java, Scala, Functional Programming, Concurrency, Macro.
Both deal with the HTTP domain; in both, you first create a value representing an endpoint or an HTTP request. This value is, of course, immutable, which allows incremental refinement, as well as separating concerns: the networking layer from the domain layer. Macros, not reflection The third