I n the functional-programming world, traditional design patterns generally manifest in one of three ways:
- The pattern is absorbed by the language.
- The pattern solution still exists in the functional paradigm, but the implementation details
- The solution is implemented using capabilities other languages or paradigms lack. (For example, many solutions that use metaprogramming are clean and elegant — and they're not
possible in Java.)