typing rank polymorphism
play

Typing Rank Polymorphism Justin Slepak In collaboration with Olin - PowerPoint PPT Presentation

Typing Rank Polymorphism Justin Slepak In collaboration with Olin Shivers and Panagiotis Manolios 100 175 0.6 ( [(lo 0) (hi 0) ( 0)] (+ (* hi ) (* lo (- 1 )))) 100 175 0.6 (( [(lo 0) (hi 0) ( 0)] (+ (* hi ) (* lo (- 1


  1. > last-four [{(year 2015) (city "Chicago") (name "Blackhawks")} {(year 2016) (city "Pittsburgh") (name "Penguins")} {(year 2017) (city "Pittsburgh") (name "Penguins")} {(year 2018) (city "Washington") (name "Capitals")}] > (shape-of last-four) [4] > (head last-four) {(year 2015) (city "Chicago") (name "Blackhawks")} > (get city last-four)

  2. > last-four [{(year 2015) (city "Chicago") (name "Blackhawks")} {(year 2016) (city "Pittsburgh") (name "Penguins")} {(year 2017) (city "Pittsburgh") (name "Penguins")} {(year 2018) (city "Washington") (name "Capitals")}] > (shape-of last-four) [4] > (head last-four) {(year 2015) (city "Chicago") (name "Blackhawks")} > (get city last-four) ["Chicago" "Pittsburgh" "Pittsburgh" "Washington"]

  3. > last-four [{(year 2015) (city "Chicago") (name "Blackhawks")} {(year 2016) (city "Pittsburgh") (name "Penguins")} {(year 2017) (city "Pittsburgh") (name "Penguins")} {(year 2018) (city "Washington") (name "Capitals")}] > (shape-of last-four) [4] > (head last-four) {(year 2015) (city "Chicago") (name "Blackhawks")} > (get city last-four) ["Chicago" "Pittsburgh" "Pittsburgh" "Washington"] > (string=? "Pittsburgh" (get city last-four))

  4. > last-four [{(year 2015) (city "Chicago") (name "Blackhawks")} {(year 2016) (city "Pittsburgh") (name "Penguins")} {(year 2017) (city "Pittsburgh") (name "Penguins")} {(year 2018) (city "Washington") (name "Capitals")}] > (shape-of last-four) [4] > (head last-four) {(year 2015) (city "Chicago") (name "Blackhawks")} > (get city last-four) ["Chicago" "Pittsburgh" "Pittsburgh" "Washington"] > (string=? "Pittsburgh" (get city last-four)) [#f #t #t #f]

  5. Formalism

  6. Machine-friendly, fully-annotated syntax

  7. Machine-friendly, fully-annotated syntax Human-friendly shorthand (+ [1 2 3] [[10 20] [30 40] [50 60]])

  8. (+ [1 2 3] [[10 20] [30 40] [50 60]])

  9. (+ [1 2 3] [[10 20] [30 40] [50 60]]) : (Arr (-> ((Arr (Shp) Int) (Arr (Shp) Int)) (Arr (Shp) Int)) (Shp))

  10. (+ [1 2 3] [[10 20] [30 40] [50 60]]) : (Arr (-> ((Arr (Shp) Int) : (Arr (Shp 3) Int) (Arr (Shp) Int)) : (Arr (Shp 3 2) Int) (Arr (Shp) Int)) (Shp))

  11. (+ [1 2 3] [[10 20] [30 40] [50 60]]) : (Arr (-> ((Arr (Shp) Int) : (Arr (Shp 3) Int) (Arr (Shp) Int)) : (Arr (Shp 3 2) Int) (Arr (Shp) Int)) (Shp)) (Shp 3 2)

  12. (+ [1 2 3] [[10 20] [30 40] [50 60]]) : (Arr (Shp 3 2) Int) : (Arr (-> ((Arr (Shp) Int) : (Arr (Shp 3) Int) (Arr (Shp) Int)) : (Arr (Shp 3 2) Int) (Arr (Shp) Int)) (Shp)) (Shp 3 2)

  13. Ensure ragged result data typed appropriately

  14. Canonicalize: f at append of bags-of-summands

  15. Cell-type polymorphism

  16. vec-norm : (-> ((Arr [3] Float)) Float)

  17. vec-norm : (-> ((Arr [2] Float)) Float)

  18. vec-norm : (-> ((Arr [L] Float)) Float)

  19. vec-norm : (Pi ((L Dim)) (-> ((Arr [L] Float)) Float))

  20. vec-norm : (Pi ((L Dim)) (-> ((Arr [L] Float)) Float)) n.b., shorthand for (Arr [] (Pi ((L Dim)) (Arr [] (-> ((Arr [L] Float)) (Arr [] Float)))))

  21. m*

  22. m* (Pi ((L Dim) (M Dim) (N Dim)) (-> ((Arr [L M] Float) (Arr [M N] Float)) (Arr [L N] Float)))

  23. m* (Pi ((L Dim) (M Dim) (N Dim)) (-> ((Arr [L M] Float) (Arr [M N] Float)) (Arr [L N] Float))) head

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend