Dhall as a Gateway-drug to Typed Functional Programming
Haskell (and the kind of Statically Typed Functional Programming that it promotes) is notoriously hard to learn. I have struggled with the learning curve. I have seen others struggle with it. And I have seen developers struggling to wield the language effectively even after months of learning.
But it is not necessary to jump into the weird world of Monad, Monoid, and Endofunctors. There are neighbouring languages that can be immediately put to good use and introduce some of the Typed FP concepts more gradually.
We'll talk about one of them - Dhall: A Typed FP language specifically for configuration management.
Outline/Structure of the Talk
- Quick demo of Dhall for Config Management - 5 mins
- Quick recap of why Statically-typed Functional Programming (Typed FP) is hard for newcomers (the kind of FP that Haskell and friends promote)
- Specific concepts that are very alien to most developers working with other mainstream languages (like Java, C#, Ruby, Python, Javascript, etc) - 5 mins
- Why diving into the deep-end of Typed FP may actually be counterproductive when introduced to teams - 5 mins
- Some neighbouring languages like Elm that give a gradual learning curve to Typed FP - 5 mins
- Introduction to Dhall and why it might be a good choice to introduce Typed FP - 20 mins
- Practical problems that Dhall solves which make it worthwhile to learn, i.e. configuration management
- Specific concepts that are common between Dhall and other Typed FP languages
- Q & A - 5 mins
Learning Outcome
- Understanding of what makes Typed FP hard for beginners
- Understanding of Dhall as a Typed FP language and the problem that it solves (configuration management)
- Understanding of some options in flattening the steep learning curve of Typed FP
Target Audience
Anyone who is curious about typed functional-programming: how to get started with it, or how to introduce FP to your colleagues/team-members.
Prerequisites for Attendees
No prerequisites. Just a curious an open mind :-)
Video
Links
- Dhall as a Gateway Drug to Haskell: Companion blog post with this talk
- Real World Haskell: Good, Bad, & Ugly
- https://www.youtube.com/watch?v=7NB8tMa8sUk
- My first talk at Functional Conf 2017 which talks about our journey of using Haskell at Vacation Labs
- Why is Haskell so hard to learn? (and how to deal with it)
- https://www.youtube.com/watch?v=JKJaD7E6WxE
- My most recent talk at Functional Conf 2019, which addresses this topic based on my of own learning-experience with Haskell, and observations made while mentoring interns and fresh graduates learning Haskell.
- Property-based testing: Examples from business application
- https://www.youtube.com/watch?v=j5QdYNREw-w
- My talk from Agile India 2020, which goes beyond the text-book introductions to Property-based Testing (PBT). A lot of examples from standard "line-of-business" applications where PBT can be used and has been used.
- "Refresh-driven" development with Haskell & Elm
- https://www.youtube.com/watch?v=CUoisP60vGI
- My talk from Functional Conf 2018, which was one year after using Haskell in production at Vacation Labs. We had started experimenting with typed FP on the frontend (via Elm), and shared some experiences in how to make the developer experience better.
schedule Submitted 4 months ago
People who liked this proposal, also liked:
-
keyboard_arrow_down
Luca Mugnaini - Familiarity or Guarantees? Functional Programming for the front-end
20 Mins
Experience Report
Beginner
In the front-end world, we finally can take an important decision: Familiarity or Guarantees?
Do we keep using frameworks that are familiar to JavaScript (bringing with them all JS idiosyncrasies) or do we embrace a world of guarantees where functions are pure, data is immutable, types are correct, and runtime exceptions don’t exist?
In Rakuten, we went the way of guarantees three years ago, choosing Elm.
In this talk, I am going to explain what are the benefits of Elm in the front-end, and what was our experience.
I will showcase examples, best practices, things that we liked, and things that we didn't like.