From 74271069b156677cc32896443bd9f98bbaf5080a Mon Sep 17 00:00:00 2001 From: Kayser Date: Tue, 7 May 2019 17:35:59 -0400 Subject: [PATCH] Add resources slides --- assets/static/images/pfds_cover.jpg | Bin 0 -> 16892 bytes lib/pfds_visualizations_web/navigation.ex | 6 +++++- .../templates/slide/more_resources.html.eex | 20 ++++++++++++++++++ .../views/slide_view.ex | 4 ++++ 4 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 assets/static/images/pfds_cover.jpg create mode 100644 lib/pfds_visualizations_web/templates/slide/more_resources.html.eex diff --git a/assets/static/images/pfds_cover.jpg b/assets/static/images/pfds_cover.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e9780ad05f7c663f0751e048bb4a6d0a9bd0fb6d GIT binary patch literal 16892 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 %{ - prev: Helpers.slide_path(Endpoint, :show, "47") + prev: Helpers.slide_path(Endpoint, :show, "47"), + next: Helpers.slide_path(Endpoint, :show, "48") + }, + "/slides/48" => %{ + prev: Helpers.bankers_queue_path(Endpoint, :index) } } diff --git a/lib/pfds_visualizations_web/templates/slide/more_resources.html.eex b/lib/pfds_visualizations_web/templates/slide/more_resources.html.eex new file mode 100644 index 0000000..b0bb7e1 --- /dev/null +++ b/lib/pfds_visualizations_web/templates/slide/more_resources.html.eex @@ -0,0 +1,20 @@ +

More Resources

+

+1) Purely Functional Data Structures by Chris Okasaki
+ +

+

+2) Purely Functional Data Structures, the White Paper by Chris Okasaki +https://www.cs.cmu.edu/~rwh/theses/okasaki.pdf +

+

+3) Data Structures and Amortized Complexity in a Functional Setting, Berry Schoenmakers +

+

+My implementations of purely functional data structures in Elixir on Github +https://github.com/zkayser/pfds_elixir +

+

+These slides (all done in LiveView!) +https://github.com/zkayser/pfds_visualizations +

\ No newline at end of file diff --git a/lib/pfds_visualizations_web/views/slide_view.ex b/lib/pfds_visualizations_web/views/slide_view.ex index d78e517..153cd3d 100644 --- a/lib/pfds_visualizations_web/views/slide_view.ex +++ b/lib/pfds_visualizations_web/views/slide_view.ex @@ -145,6 +145,9 @@ defmodule PfdsVisualizationsWeb.SlideView do "47" -> "the_debit_invariant.html" + "48" -> + "more_resources.html" + # "3" -> "refresher.html" _ -> "intro.html" @@ -191,6 +194,7 @@ defmodule PfdsVisualizationsWeb.SlideView do "45" -> [:reveal_1] "46" -> [:reveal_1, :reveal_2, :reveal_3, :reveal_4] "47" -> [:reveal_1, :reveal_2, :reveal_3, :reveal_4, :reveal_5] + "48" -> [:reveal_1, :reveal_2, :reveal_3, :reveal_4, :reveal_5] # "3" -> App.RefresherView.reveals() _ -> [] end