I've been to Lambda Days 2020 Conference last week and wanted to gather my notes and recommendations I got for learning functional programming from speakers and other participants.
Introduction to Kotlin's coroutines and reactive streams by Krystian Rybarczyk #
I've enjoyed a talk by Krystian Rybaczyk about Kotlin Flows.
I'm not a heavy Kotlin user and Flows still aren't ready, but it was similar to async/await in JS and Python. Looks promising.
He warned about * RaectiveX libraries as writing new operators is hard and it's a lot harder to reason about streams.
Comparing common concurrency patterns in Elixir and Erlang by Devon Estes #
Devon Estes talk was based on 4 most common patterns from a book Patterns for Parallel Programming
- Embarrassingly Parallel (send emails)
- Reduction (do something and use the result)
- Asynchronous Decomposition
- Pipeline Processing
It was interesting to learn how GenStage works by basically using back-pressure to get work done. It was an example of Pipeline Processing.
Nix -- the functional package manager by Piotr Gaczkowski #
Basics of Nix Package Manager. You can see the slides at Piotr Gaczkowski website.
- You can use nix-shell in a Shebang Line. What it means is that you can configure the exact environment your script needs. Nix will install its dependencies, run your script and clean up (uninstall all dependencies) to leave your environment as if nothing happened.
- I've learned about direnv
direnvis an extension for your shell. It augments existing shells with a new feature that can load and unload environment variables depending on the current directory.
- Nix has some similarity to docker but, I didn't catch many details.
- I've learned of a similar project called GNU Guix, written in Guile language
Category Theory as a Tool for Thought by Daniel Beskin #
What I got from this talk was a list of things I can learn that I would need to understand it.
- Bartosz Milewski's Programming Cafe blog.
- YouTube Playlist: Category theory for programmers by Bartosz Milewski.
- MIT Course: Applied Category Theory
- Seven Sketches in Compositionality: An Invitation to Applied Category Theory by Brendan Fong and David I. Spiva
- Bartosz Milewski's Code Dive
I got the list from Cezar Pokorski who asked the presenter for introductory materials.
Some quotes to give you an idea about a talk (mentioned as a joke, but I wasn't laughing) #
A monad is just a monoid in the category of endofunctors, what's the problem?
~ James Iry more info
All Concepts are Kan Extensions
Modelling Side Effects via Extensible Effects and Property Testing by William Heslam #
It was a great talk about:
- Property Testing
- Extensible Effects
- How to use them together
I've learned about TestCheck.js that I can use in JS or TS.
Unfortunately, the last two parts of the talk while well presented didn't seem to me like they were worth diving into, but in comparison, Property Testing is super easy.
The power of Π by Thorsten Altenkirch #
Another talk that was way above my level. Just a couple of useful links:
Haskell type system is not up to the job, because it lacks Dependent Types.
~ from my notes by Thorsten Altenkirch
- Thorsten Altenkirch recommended a talk by Conor McBride named
Winging It, 2000but, I couldn't find it.
- Type-Driven Development with Idris by Edwin Brady
- One of my friends—Gabriel Habryn recommended going over Idris website tutorials to learn more about dependent types in practice.
Effect Handlers: A New Approach to Computational Effects by Maciej Piróg #
I've learned that Maciej Piróg works on Effect Handlers in Wrocław, Poland. It was great to see the new language called Helium that supports Effect Handlers.