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

They're functional! They're efficient!! They're persistent data structures!!!

They're functional! They're efficient!! They're persistent data structures!!!

Functional programming is a cool paradigm to work in, because avoiding mutable objects can save you a lot of headaches! But when you’re using only immutable objects, you have to create a new object each time something changes, which means copying even the parts that didn’t change! This can slow things down, and you might even run out of memory!

Fear not: persistent data structures to the rescue! They save you time and space when modifying objects, by reusing parts of the old object that you don’t need to change! Let’s find out what that means and why it is SO AWESOME! And let’s learn how to easily use these structures in JavaScript!

(Given at !!Con 2016 - http://bangbangcon.com/)

Anjana Sofia Vakil

May 08, 2016
Tweet

More Decks by Anjana Sofia Vakil

Other Decks in Programming

Transcript

  1. 7KH\¶UH«
    )XQFWLRQDO
    (IILFLHQW
    3HUVLVWHQWGDWDVWUXFWXUHV
    #$QMDQD9DNLO
    &RQ

    View Slide

  2. )DOO

    View Slide

  3. )XQFWLRQDO3URJUDPPLQJ
    URFNV

    View Slide

  4. ,PPXWDELOLW\
    URFNV

    View Slide

  5. 1RERG\VLWVOLNHWKLVURFNVLWV

    View Slide

  6. » ¼ ½ ¾ ¿ À Á Â
    ,QWKHODQGRIPXWDELOLW\
    AJJ

    View Slide

  7. » ‹ ½ ¾ ¿ À Á Â
    ,QWKHODQGRIPXWDELOLW\
    AJJ

    View Slide

  8. 2YHUKHDG EXJV

    View Slide

  9. ,QWKHODQGRILPPXWDELOLW\
    » ¼ ½ ¾ ¿ À Á Â
    AJJ

    View Slide

  10. ,QWKHODQGRILPPXWDELOLW\
    » ¼ ½ ¾ ¿ À Á Â
    AJJ
    » ‹ ½ ¾ ¿ À Á Â
    RJJ

    View Slide

  11. &RS\LQJZDVWHVWLPHVSDFH

    View Slide

  12. 7KHUHPXVWEHDEHWWHUZD\

    View Slide

  13. 3HUVLVWHQW'DWD6WUXFWXUHV

    View Slide

  14. 2OGYHUVLRQVQHYHUFKDQJH
    WKH\MXVWVLWDQGDUH

    View Slide

  15. 1HZYHUVLRQVFUHDWHGHIILFLHQWO\
    '

    View Slide

  16. 0DJLF"

    View Slide

  17. 5HXVHXQFKDQJHGSDUWV

    View Slide

  18. /LQNHGOLVWV
    » ¼ ½ ¾
    AJJ

    View Slide

  19. /LQNHGOLVWV
    » ¼ ½ ¾
    AJJ
    » ‹
    RJJ

    View Slide

  20. /LQNHGOLVWV
    » ¼ ½ ¾
    AJJ
    » ‹
    RJJ

    View Slide

  21. 7UHHV
    ,OOXVWUDWLRQE\0DUFR3LD]]D

    View Slide

  22. 7UHHV
    :HOODFWXDOO\
    WULHV
    ,OOXVWUDWLRQE\0DUFR3LD]]D

    View Slide

  23. 7UHHV
    :HOODFWXDOO\
    WULHV
    1RZHOODFWXDOO\¶V
    ,OOXVWUDWLRQE\0DUFR3LD]]D

    View Slide

  24. 7UHHV
    2RSVVRUU\
    :HOODFWXDOO\
    WULHV
    1RZHOODFWXDOO\¶V
    ,OOXVWUDWLRQE\0DUFR3LD]]D

    View Slide

  25. 7UHHV
    » ¼ ½ ¾ ¿ À Á Â

    View Slide

  26. 7UHHV
    » ¼ ½ ¾ ¿ À Á Â

    View Slide

  27. 7UHHV
    » ¼ ½ ¾ ¿ À Á Â

    View Slide

  28. 7UHHV
    » ¼ ½ ¾ ¿ À Á Â

    View Slide

  29. 7UHHV
    » ¼ ½ ¾ ¿ À Á Â
    AJJ

    View Slide

  30. 7UHHV3DWKFRS\LQJ
    » ¼ ½ ¾
    AJJ
    ¿ À Á Â

    View Slide

  31. 7UHHV3DWKFRS\LQJ
    » ¼ ½ ¾
    AJJ
    ¿ À Á Â
    ‹
    »

    View Slide

  32. 7UHHV3DWKFRS\LQJ
    » ¼ ½ ¾
    AJJ
    ¿ À Á Â
    ‹
    »

    View Slide

  33. 7UHHV3DWKFRS\LQJ
    » ¼ ½ ¾
    AJJ
    ¿ À Á Â
    ‹
    »

    View Slide

  34. 7UHHV3DWKFRS\LQJ
    » ¼ ½ ¾
    AJJ
    ¿ À Á Â
    ‹
    »
    RJJ

    View Slide

  35. 7UHHV3DWKFRS\LQJ6WUXFWXUDOVKDULQJ
    » ¼ ½ ¾
    AJJ
    ¿ À Á Â
    ‹
    »
    RJJ

    View Slide

  36. 7UHHV3DWKFRS\LQJ6WUXFWXUDOVKDULQJ
    » ¼ ½ ¾
    AJJ
    ¿ À Á Â
    ‹
    »
    RJJ

    View Slide

  37. ,PPXWDELOLW\
    &RS\LQJ
    6KDULQJ '

    View Slide

  38. 0RUL
    KWWSVVZDQQRGHWWHJLWKXELRPRUL
    Q

    View Slide

  39. /LEUDULHVIRURWKHUODQJXDJHVWRR

    View Slide

  40. RUMXVWXVHDIXQFWLRQDOODQJXDJH
    VD\&ORMXUH

    View Slide

  41. )XUWKHU5HDGLQJ
    ³8QGHUVWDQGLQJ&ORMXUH¶V3HUVLVWHQW9HFWRUV´
    -HDQ1LNODV/
    RUDQJH
    KWWSK\SLULRQFRPPXVLQJVXQGHUVWDQGLQJSHUVLVWHQWYHFWRUSW
    ³,GHDO+DVK7UHHV´
    3KLO%DJZHOO
    KWWSODPSZZZHSIOFKSDSHUVLGHDOKDVKWUHHVSGI

    View Slide

  42. 7KDQNVIRUOLVWHQLQJ
    ,¶P#$QMDQD9DNLO
    +XJHWKDQNVWR
    5HFXUVH&HQWHUDOXPV
    6DO%HFNHU)¶
    &RQRUJDQL]HUV

    View Slide