- references
- to refresh knowledge about design patterns please refer: https://github.com/mtumilowicz/designPatterns
- goals of this workshop
- show some design patterns in a more functional way
- introduction to basic functional programming structures enabling neat design
- functions as a first-class citizen
- streams
 
 
- workshops: /lambda/<Name>Workshop
- answers: /lambda/<Name>
- Single Abstract Method (SAM) type
- another name for @FunctionalInterfaces- functional interface is also known as Single Abstract Method Interface
 
- example: Runnable,Callable, etc
- provide target types for lambda expressions and method references
 
- another name for 
- first-class citizen
- is an entity which supports all the operations generally available to other entities
- operations typically include being passed as an argument, returned from a function, modified, and assigned to a variable
 
- programming language is said to have first-class functions if it treats functions as first-class citizens
| Pattern | Lambda | 
|---|---|
| Chain of Responsibility | Stream of functions | 
| Decorator | Functions composition | 
| Interpreter | Map of functions | 
| Iterator | Stream | 
| Strategy | SAM | 
| Template | SAM | 
| Visitor | Map of functions | 
- note that many more patterns from GOF could be rewritten in a more functional way by simply using
SAM conversion
- example: Observer
 
- example: