Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Javaslang DevoxxBE 2016

Javaslang DevoxxBE 2016

Grzegorz Piwowarek

November 08, 2016
Tweet

More Decks by Grzegorz Piwowarek

Other Decks in Programming

Transcript

  1. @pivovarit
    #Devoxx #javaslang
    Grzegorz Piwowarek

    View Slide

  2. @pivovarit
    #Devoxx #javaslang
    /dev/pivovarit
    [email protected]
    Senior [email protected]
    Yoyo Player
    Musician

    View Slide

  3. @pivovarit
    #Devoxx #javaslang
    Functional Java 8

    View Slide

  4. @pivovarit
    #Devoxx #javaslang
    Functional Java 8

    View Slide

  5. @pivovarit
    #Devoxx #javaslang
    Functional Java 8

    View Slide

  6. @pivovarit
    #Devoxx #javaslang
    Issues
    ● Only 3 functional control structures
    ● No memoization
    ● No partial functions lifting
    ● No tuples
    ● Optional extends NOT Serializable/Iterable
    ● Lack of Stream/Optional in APIs
    ● “Type pollution”
    ● list.stream().map(...).collect(Collectors.toList())
    ● ...

    View Slide

  7. @pivovarit
    #Devoxx #javaslang
    ● Declared params
    ● Mutable instance state
    ● Mutable global state
    ● Declared return value
    ● Mutable instance state
    ● Mutable global state
    ● Mutable params
    ● Exceptions
    Potential inputs
    Potential outputs

    View Slide

  8. @pivovarit
    #Devoxx #javaslang
    ● Declared params
    ● Mutable instance state
    ● Mutable global state
    ● Declared return value
    ● Mutable instance state
    ● Mutable global state
    ● Mutable params
    ● Exceptions
    Potential inputs
    Potential outputs

    View Slide

  9. @pivovarit
    #Devoxx #javaslang
    ● Declared params
    ● Mutable instance state
    ● Mutable global state
    ● Declared return value
    ● Mutable instance state
    ● Mutable global state
    ● Mutable params
    ● Exceptions
    Potential inputs
    Potential outputs

    View Slide

  10. @pivovarit
    #Devoxx #javaslang
    Functional programming
    is not about lambdas.

    View Slide

  11. @pivovarit
    #Devoxx #javaslang
    Functional programming is about writing pure functions, about
    removing hidden inputs and outputs as far as we can, so that
    as much of our code as possible just describes a relationship
    between inputs and outputs.
    http://blog.jenkster.com/2015/12/what-is-functional-programming.html

    View Slide

  12. @pivovarit
    #Devoxx #javaslang
    Immutability
    Referential Transparency

    View Slide

  13. @pivovarit
    #Devoxx #javaslang

    View Slide

  14. @pivovarit
    #Devoxx #javaslang

    View Slide

  15. @pivovarit
    #Devoxx #javaslang

    View Slide

  16. @pivovarit
    #Devoxx #javaslang
    Collections API:
    ● boolean add()
    ● boolean remove()
    ● void clear()
    ● ...

    View Slide

  17. @pivovarit
    #Devoxx #javaslang

    View Slide

  18. @pivovarit
    #Devoxx #javaslang

    View Slide

  19. @pivovarit
    #Devoxx #javaslang
    λ
    Tuple
    Value

    View Slide

  20. @pivovarit
    #Devoxx #javaslang

    View Slide

  21. @pivovarit
    #Devoxx #javaslang

    View Slide

  22. @pivovarit
    #Devoxx #javaslang

    View Slide

  23. @pivovarit
    #Devoxx #javaslang

    View Slide

  24. @pivovarit
    #Devoxx #javaslang

    View Slide

  25. @pivovarit
    #Devoxx #javaslang

    View Slide

  26. @pivovarit
    #Devoxx #javaslang

    View Slide

  27. @pivovarit
    #Devoxx #javaslang

    View Slide

  28. @pivovarit
    #Devoxx #javaslang

    View Slide

  29. @pivovarit
    #Devoxx #javaslang

    View Slide

  30. @pivovarit
    #Devoxx #javaslang

    View Slide

  31. @pivovarit
    #Devoxx #javaslang

    View Slide

  32. @pivovarit
    #Devoxx #javaslang

    View Slide

  33. @pivovarit
    #Devoxx #javaslang

    View Slide

  34. @pivovarit
    #Devoxx #javaslang

    View Slide

  35. @pivovarit
    #Devoxx #javaslang

    View Slide

  36. @pivovarit
    #Devoxx #javaslang

    View Slide

  37. @pivovarit
    #Devoxx #javaslang
    Pattern Matching

    View Slide

  38. @pivovarit
    #Devoxx #javaslang

    View Slide

  39. @pivovarit
    #Devoxx #javaslang

    View Slide

  40. @pivovarit
    #Devoxx #javaslang

    View Slide

  41. @pivovarit
    #Devoxx #javaslang

    View Slide

  42. @pivovarit
    #Devoxx #javaslang

    View Slide

  43. @pivovarit
    #Devoxx #javaslang

    View Slide

  44. @pivovarit
    #Devoxx #javaslang

    View Slide

  45. @pivovarit
    #Devoxx #javaslang
    Thank You!
    Psssst, I have stickers.

    View Slide